Files
EmptyMauiApp/MauiApp/Core/CoreModule.cs
2023-10-18 19:02:51 +02:00

68 lines
2.7 KiB
C#

using CommunityToolkit.Maui;
using CommunityToolkit.Mvvm.Messaging;
using MauiApp.Core.Business;
using MauiApp.Core.Business.Contracts;
using MauiApp.Core.RestClient.AuthenticationApi;
using MauiApp.Core.RestClient.AuthenticationApi.Contracts;
using MauiApp.Core.RestClient.IntegryApi;
using MauiApp.Core.RestClient.IntegryApi.Contracts;
using MauiApp.Core.System.Device;
using MauiApp.Core.System.Device.Contracts;
using MauiApp.Core.System.LocalStorage;
using MauiApp.Core.System.LocalStorage.Contracts;
using MauiApp.Core.System.Navigation;
using MauiApp.ViewModels;
using MauiApp.Views;
namespace MauiApp.Core;
public static class CoreModule
{
public static MauiAppBuilder RegisterAppServices(this MauiAppBuilder applicationBuilder)
{
applicationBuilder.Services.AddSingleton<IAccountService, AccountService>();
applicationBuilder.Services.AddSingleton<IDeviceService, DeviceService>();
applicationBuilder.Services.AddSingleton<IUserSessionService, UserSessionService>();
applicationBuilder.Services.AddSingleton<ILocalStorage, LocalStorage>();
applicationBuilder.Services.AddSingleton<IAuthenticationApiRestClient, AuthenticationApiRestClient>(provider =>
{
var deviceService = provider.GetService<IDeviceService>();
return new AuthenticationApiRestClient(deviceService)
{
BaseUrl = "https://devservices.studioml.it/ems-api/"
};
});
applicationBuilder.Services.AddSingleton<IIntegryApiRestClient, IntegryApiRestClient>(
provider =>
{
var userDataSession = provider.GetService<IUserSessionService>();
var messenger = provider.GetService<IMessenger>();
return new IntegryApiRestClient(userDataSession, messenger)
{
BaseUrl = "https://devservices.studioml.it/ems-api/"
};
});
applicationBuilder.Services.AddSingleton<IIntegryLoginRestClient, IntegryLoginRestClient>();
applicationBuilder.Services.AddSingleton<IIntegrySystemRestClient, IntegrySystemRestClient>();
applicationBuilder.Services.AddSingleton<IMessenger, WeakReferenceMessenger>();
applicationBuilder.Services.AddSingleton<INavigationService, NavigationService>();
return applicationBuilder;
}
public static MauiAppBuilder RegisterViews(this MauiAppBuilder mauiAppBuilder)
{
mauiAppBuilder.Services.AddSingleton<AppShell>();
mauiAppBuilder.Services.AddTransientWithShellRoute<MainPage, MainPageViewModel>(nameof(MainPage));
mauiAppBuilder.Services.AddTransientWithShellRoute<LoginPage, LoginPageViewModel>(nameof(LoginPage));
return mauiAppBuilder;
}
}