diff --git a/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs b/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs index 1fdf9431..19bdaa19 100644 --- a/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs +++ b/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs @@ -67,8 +67,7 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { return factory.CreateClient("default"); }); - builder.Services.AddSingleton>( - new Func(configSetting => { + builder.Services.AddSingleton(new Func(configSetting => { IApplicationCache applicationCache = MauiProgram.Container.Services.GetService(); if (applicationCache != null) @@ -91,22 +90,41 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton>(new Func(useTrainingMode => + builder.RegisterConfigurationService().RegisterAuthenticationService().RegisterTransactionService().RegisterMerchantService(); + + builder.Services.RegisterHttpClientX(); + builder.Services.AddSingleton(); + + builder.ConfigureDeviceIdProvider(); + + return builder; + } + + private static MauiAppBuilder RegisterConfigurationService(this MauiAppBuilder builder) { + builder.Services.AddSingleton(new Func(useTrainingMode => { return useTrainingMode switch { true => new TrainingConfigurationService(), _ => MauiProgram.Container.Services.GetService() } ?? throw new InvalidOperationException("Failed to resolve IConfigurationService."); })); + return builder; + } + private static MauiAppBuilder RegisterAuthenticationService(this MauiAppBuilder builder) + { builder.Services.AddSingleton(new Func(useTrainingMode => { - return useTrainingMode switch { + return useTrainingMode switch + { true => new TrainingAuthenticationService(), _ => MauiProgram.Container.Services.GetService() } ?? throw new InvalidOperationException("Failed to resolve IConfigurationService."); })); + return builder; + } - builder.Services.AddSingleton>(new Func(useTrainingMode => + private static MauiAppBuilder RegisterTransactionService(this MauiAppBuilder builder) { + builder.Services.AddSingleton(new Func(useTrainingMode => { return useTrainingMode switch { @@ -114,8 +132,12 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { _ => MauiProgram.Container.Services.GetService() } ?? throw new InvalidOperationException("Failed to resolve ITransactionService."); })); - - builder.Services.AddSingleton>(new Func(useTrainingMode => + return builder; + } + + private static MauiAppBuilder RegisterMerchantService(this MauiAppBuilder builder) + { + builder.Services.AddSingleton(new Func(useTrainingMode => { return useTrainingMode switch { @@ -123,12 +145,6 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { _ => MauiProgram.Container.Services.GetService() } ?? throw new InvalidOperationException("Failed to resolve ITransactionService."); })); - - builder.Services.RegisterHttpClientX(); - builder.Services.AddSingleton(); - - builder.ConfigureDeviceIdProvider(); - return builder; } @@ -280,8 +296,7 @@ public static MauiAppBuilder ConfigurePages(this MauiAppBuilder builder) { #endregion - public static IHttpClientBuilder RegisterHttpClientX( - this IServiceCollection services) + public static IHttpClientBuilder RegisterHttpClientX(this IServiceCollection services) where TInterface : class where TImplementation : class, TInterface {