-
Notifications
You must be signed in to change notification settings - Fork 0
/
MauiProgram.cs
72 lines (63 loc) · 2.41 KB
/
MauiProgram.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
using System.Reflection;
using Auth0.OidcClient;
using epj.RouteGenerator;
using JadeMaui.Services;
using JadeMaui.Views;
using MauiIcons.Material;
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace JadeMaui;
[AutoRoutes("Page")]
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
#if DEBUG
builder.Logging.AddDebug();
#endif
builder
.UseMauiApp<App>()
.UseMaterialMauiIcons()
.ConfigureFonts(fonts =>
{
fonts.AddFont("Inter-Regular.ttf", "InterRegular");
fonts.AddFont("Inter-Bold.ttf", "InterBold");
});
// Reading out from assembly into stream, you'll need to re-compile for updating configuration
var a = Assembly.GetExecutingAssembly();
using var stream = a.GetManifestResourceStream("JadeMaui.appsettings.json");
var config = new ConfigurationBuilder()
.AddJsonStream(stream)
.Build();
builder.Configuration.AddConfiguration(config);
var auth0Domain = builder.Configuration["Auth0:Domain"]!;
var auth0ClientId = builder.Configuration["Auth0:ClientId"]!;
var signalRNoteUrl = builder.Configuration["SignalR:NoteUrl"]!;
// Singletons
var auth0Client = new Auth0Client(new()
{
Domain = auth0Domain,
ClientId = auth0ClientId,
RedirectUri = "jade://callback/",
PostLogoutRedirectUri = "jade://callback/",
Scope = "openid profile email offline_access"
});
// Pages
builder.Services.AddSingleton<JadePage>();
builder.Services.AddSingleton<NotesPage>();
builder.Services.AddSingleton<NotesArchivePage>();
builder.Services.AddSingleton<ProfilePage>();
// Services
builder.Services.AddSingleton<SignalRService>();
builder.Services.AddSingleton<RestService>();
builder.Services.AddSingleton<NoteService>();
builder.Services.AddSingleton<DebounceService>();
// Other
builder.Services.AddSingleton(auth0Client);
builder.Services.AddSingleton(builder.Configuration);
builder.Services.AddSingleton(new UserManager(auth0Domain, auth0ClientId, auth0Client));
return builder.Build();
}
}