Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 30 additions & 15 deletions TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) {
return factory.CreateClient("default");
});

builder.Services.AddSingleton<Func<String, String>>(
new Func<String, String>(configSetting => {
builder.Services.AddSingleton(new Func<String, String>(configSetting => {
IApplicationCache applicationCache = MauiProgram.Container.Services.GetService<IApplicationCache>();

if (applicationCache != null)
Expand All @@ -91,44 +90,61 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) {
builder.Services.AddSingleton<IMerchantService, MerchantService>();
builder.Services.AddSingleton<IUpdateService, UpdateService>();

builder.Services.AddSingleton<Func<Boolean, IConfigurationService>>(new Func<Boolean, IConfigurationService>(useTrainingMode =>
builder.RegisterConfigurationService().RegisterAuthenticationService().RegisterTransactionService().RegisterMerchantService();

builder.Services.RegisterHttpClientX<ISecurityServiceClient, SecurityServiceClient>();
builder.Services.AddSingleton<IApplicationCache, ApplicationCache>();

builder.ConfigureDeviceIdProvider();

return builder;
}

private static MauiAppBuilder RegisterConfigurationService(this MauiAppBuilder builder) {
builder.Services.AddSingleton(new Func<Boolean, IConfigurationService>(useTrainingMode =>
{
return useTrainingMode switch {
true => new TrainingConfigurationService(),
_ => MauiProgram.Container.Services.GetService<IConfigurationService>()
} ?? throw new InvalidOperationException("Failed to resolve IConfigurationService.");
}));
return builder;
}

private static MauiAppBuilder RegisterAuthenticationService(this MauiAppBuilder builder)
{
builder.Services.AddSingleton(new Func<Boolean, IAuthenticationService>(useTrainingMode => {
return useTrainingMode switch {
return useTrainingMode switch
{
true => new TrainingAuthenticationService(),
_ => MauiProgram.Container.Services.GetService<IAuthenticationService>()
} ?? throw new InvalidOperationException("Failed to resolve IConfigurationService.");
}));
return builder;
}

builder.Services.AddSingleton<Func<Boolean, ITransactionService>>(new Func<Boolean, ITransactionService>(useTrainingMode =>
private static MauiAppBuilder RegisterTransactionService(this MauiAppBuilder builder) {
builder.Services.AddSingleton(new Func<Boolean, ITransactionService>(useTrainingMode =>
{
return useTrainingMode switch
{
true => new TrainingTransactionService(),
_ => MauiProgram.Container.Services.GetService<ITransactionService>()
} ?? throw new InvalidOperationException("Failed to resolve ITransactionService.");
}));

builder.Services.AddSingleton<Func<Boolean, IMerchantService>>(new Func<Boolean, IMerchantService>(useTrainingMode =>
return builder;
}

private static MauiAppBuilder RegisterMerchantService(this MauiAppBuilder builder)
{
builder.Services.AddSingleton(new Func<Boolean, IMerchantService>(useTrainingMode =>
{
return useTrainingMode switch
{
true => new TrainingMerchantService(),
_ => MauiProgram.Container.Services.GetService<IMerchantService>()
} ?? throw new InvalidOperationException("Failed to resolve ITransactionService.");
}));

builder.Services.RegisterHttpClientX<ISecurityServiceClient, SecurityServiceClient>();
builder.Services.AddSingleton<IApplicationCache, ApplicationCache>();

builder.ConfigureDeviceIdProvider();

return builder;
}

Expand Down Expand Up @@ -280,8 +296,7 @@ public static MauiAppBuilder ConfigurePages(this MauiAppBuilder builder) {

#endregion

public static IHttpClientBuilder RegisterHttpClientX<TInterface, TImplementation>(
this IServiceCollection services)
public static IHttpClientBuilder RegisterHttpClientX<TInterface, TImplementation>(this IServiceCollection services)
where TInterface : class
where TImplementation : class, TInterface
{
Expand Down
Loading