Skip to content

Commit 3a700db

Browse files
committed
UPDATE: reorganize ScalesDesktop MauiProgram
1 parent 82242ee commit 3a700db

File tree

4 files changed

+67
-26
lines changed

4 files changed

+67
-26
lines changed
+7-26
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
using System.Globalization;
21
using Append.Blazor.Printing;
32
using MauiPageFullScreen;
43
using Microsoft.Extensions.Configuration;
54
using Microsoft.Extensions.Logging;
6-
using Ws.Desktop.Models;
5+
using ScalesDesktop.Source.Shared.Extensions;
6+
using Ws.Shared.Utils;
77

88
namespace ScalesDesktop;
99

@@ -13,13 +13,8 @@ public static MauiAppBuilder CreateMauiApp()
1313
{
1414
MauiAppBuilder builder = MauiApp.CreateBuilder();
1515

16-
#if DEBUG
17-
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "DevelopVS");
18-
#else
19-
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "ReleaseVS");
20-
#endif
21-
22-
builder.Configuration.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: false, reloadOnChange: true);
16+
builder.Configuration
17+
.AddJsonFile($"appsettings.{(ConfigurationUtil.IsDevelop ? "DevelopVS" : "ReleaseVS")}.json");
2318

2419
builder.Services.AddMauiBlazorWebView();
2520
builder.Services.AddFluentUIComponents(c => c.ValidateClassNames = false);
@@ -30,13 +25,11 @@ public static MauiAppBuilder CreateMauiApp()
3025
#endif
3126

3227
builder.UseMauiApp<App>().UseFullScreen();
33-
34-
const string currentLanguage = "ru-RU";
35-
CultureInfo.DefaultThreadCurrentCulture = new(currentLanguage);
36-
CultureInfo.DefaultThreadCurrentUICulture = new(currentLanguage);
37-
builder.Services.AddLocalization();
28+
builder.SetupLocalizer();
29+
builder.ApplyRefitConfigurations();
3830

3931
builder.Services.AddScoped<IPrintingService, PrintingService>();
32+
4033
builder.Services.AddSingleton<PalletDocumentGenerator>();
4134

4235
builder.Services.AddSingleton<ScalesService>();
@@ -45,18 +38,6 @@ public static MauiAppBuilder CreateMauiApp()
4538
builder.Services.AddSingleton<LabelContext>();
4639
builder.Services.AddSingleton<PalletContext>();
4740

48-
IConfigurationSection oidcConfiguration = builder.Configuration.GetSection("Api");
49-
builder.Services.AddRefitClient<IDesktopApi>()
50-
.ConfigureHttpClient(c => c.BaseAddress = new($"{oidcConfiguration.GetValue<string>("BaseUrl") ?? ""}"))
51-
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
52-
{
53-
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
54-
});
55-
56-
builder.Services.AddScoped<PalletApi>();
57-
builder.Services.AddScoped<ArmApi>();
58-
builder.Services.AddScoped<PluApi>();
59-
6041
return builder;
6142
}
6243
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System.Globalization;
2+
using System.Reflection;
3+
using ScalesDesktop.Source.Shared.Refit;
4+
5+
namespace ScalesDesktop.Source.Shared.Extensions;
6+
7+
public static class BuilderExtensions
8+
{
9+
public static void SetupLocalizer(this MauiAppBuilder builder)
10+
{
11+
const string currentLanguage = "ru-RU";
12+
CultureInfo.DefaultThreadCurrentCulture = new(currentLanguage);
13+
CultureInfo.DefaultThreadCurrentUICulture = new(currentLanguage);
14+
15+
builder.Services.AddLocalization();
16+
}
17+
18+
public static void ApplyRefitConfigurations(this MauiAppBuilder builder)
19+
{
20+
Assembly assembly = Assembly.GetExecutingAssembly();
21+
22+
Type configurationType = typeof(IRefitEndpoint);
23+
List<IRefitEndpoint> configurations = assembly.GetTypes()
24+
.Where(t => configurationType.IsAssignableFrom(t) && t is { IsInterface: false, IsAbstract: false })
25+
.Select(Activator.CreateInstance)
26+
.Cast<IRefitEndpoint>()
27+
.ToList();
28+
29+
foreach (IRefitEndpoint config in configurations)
30+
config.Configure(builder);
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using Microsoft.Extensions.Configuration;
2+
using Ws.Desktop.Models;
3+
4+
namespace ScalesDesktop.Source.Shared.Refit.Endpoints;
5+
6+
internal class DesktopRefitEndpoint : IRefitEndpoint
7+
{
8+
public void Configure(MauiAppBuilder builder)
9+
{
10+
IConfigurationSection oidcConfiguration = builder.Configuration.GetSection("Api");
11+
builder.Services.AddRefitClient<IDesktopApi>()
12+
.ConfigureHttpClient(c => c.BaseAddress = new($"{oidcConfiguration.GetValue<string>("BaseUrl") ?? ""}"))
13+
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
14+
{
15+
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
16+
});
17+
18+
builder.Services.AddScoped<PalletApi>();
19+
builder.Services.AddScoped<ArmApi>();
20+
builder.Services.AddScoped<PluApi>();
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace ScalesDesktop.Source.Shared.Refit;
2+
3+
internal interface IRefitEndpoint
4+
{
5+
void Configure(MauiAppBuilder builder);
6+
}

0 commit comments

Comments
 (0)