-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDependencyConfiguration.cs
99 lines (83 loc) · 3.65 KB
/
DependencyConfiguration.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using Blazored.Toast;
using MonkeyCache.FileStore;
using System.Text;
using Microsoft.Extensions.Logging;
using UltimateRemote.Interfaces;
using UltimateRemote.Models;
namespace UltimateRemote;
internal static class DependencyConfiguration
{
public static MauiAppBuilder ConfigureDependencies(this MauiAppBuilder appBuilder)
{
AddIpAddressService(appBuilder.Services);
AddHttpClients(appBuilder.Services);
AddServices(appBuilder.Services);
appBuilder.Services.AddMauiBlazorWebView();
#if DEBUG
appBuilder.Services.AddBlazorWebViewDeveloperTools();
appBuilder.Logging.AddDebug();
#endif
return appBuilder;
}
private static IServiceCollection AddHttpClients(this IServiceCollection services)
{
services.AddHttpClient<DeviceScanner>(client => { client.Timeout = TimeSpan.FromSeconds(4); });
services.AddHttpClient<JukeboxService>(client => { client.Timeout = TimeSpan.FromSeconds(120); });
services.AddHttpClient(ServiceKeys.HttpClientHeartBeat, client => { client.Timeout = TimeSpan.FromSeconds(3); });
services.AddHttpClient(ServiceKeys.HttpClientApi, client => { client.Timeout = TimeSpan.FromSeconds(15); });
return services;
}
private static IServiceCollection AddIpAddressService(this IServiceCollection services)
{
#if WINDOWS || MACOS
services.AddSingleton<IIpAddressService, Platforms.Windows.Services.IpAddressService>();
#endif
#if ANDROID
services.AddScoped<IIpAddressService, Platforms.Android.Services.IpAddressService>();
#endif
#if IOS || MACCATALYST
services.AddScoped<IIpAddressService, Platforms.iOS.Services.IpAddressService>();
#endif
return services;
}
private static IServiceCollection AddServices(this IServiceCollection services)
{
services.AddTransient<UltimateDevice>();
services.AddSingleton<DeviceProvider>();
services.AddSingleton<PreferencesManager>();
services.AddKeyedSingleton<IUltimateDevice, DummyDevice>(ServiceKeys.DummyDevice);
services.AddSingleton<DeviceManager>();
services.AddSingleton<HistoryManager>();
services.AddSingleton<FilePickerService>();
services.AddSingleton<StorageContentFileService>();
services.AddSingleton<LayoutManager>();
services.AddSingleton<JukeboxService>();
services.AddSingleton<EventService>();
services.AddSingleton<FtpClient>();
services.AddBlazoredModal();
services.AddBlazoredToast();
return services;
}
public static MauiApp ConfigureServices(this MauiApp app)
{
Barrel.ApplicationId = AppInfo.PackageName;
Barrel.Current.AutoExpire = false;
//Barrel.Current.EmptyAll();
//Barrel.Current.Empty(CacheKeys.UserLayouts);
//Barrel.Current.Empty(CacheKeys.StorageContentLists);
//Barrel.Current.Empty(CacheKeys.Preferences);
//Barrel.Current.Empty(CacheKeys.KeyMacros);
Task.Run(async () =>
{
// For string search functions
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
await using var scope = app.Services.CreateAsyncScope();
var storageContentFileService = scope.ServiceProvider.GetRequiredService<StorageContentFileService>();
var prefsMgr = scope.ServiceProvider.GetRequiredService<PreferencesManager>();
ToastServiceExtensions.DefaultTimeOut = (int)prefsMgr.PopUpTimeout;
//var permissionsService = scope.ServiceProvider.GetRequiredService<PermissionsService>();
//await permissionsService.CheckPermissionsAsync();
}).Wait();
return app;
}
}