using System.Reflection; using CommunityToolkit.Maui; using CommunityToolkit.Maui.Markup; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Maui.Controls.Hosting; using Microsoft.Maui.Hosting; using RBLNews.Maui.Services; using RBLNews.Shared.Models; using RBLNews.Shared.Services; using RBLNews.Shared.Services.Contracts; namespace RBLNews.Maui { public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp() .UseMauiCommunityToolkit() .UseMauiCommunityToolkitMarkup() .ConfigureFonts(fonts => { //fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("NanumMyeongjo-Regular.ttf", "NanumMyeongjoRegular"); }); builder.Services.AddMauiBlazorWebView(); builder.Services.AddBlazorBootstrap(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); builder.Logging.AddDebug(); #endif Stream? appSettingFile = Assembly.GetExecutingAssembly().GetManifestResourceStream($"appsettings.json"); if (appSettingFile != null) { IConfiguration configuration = new ConfigurationManager().AddJsonStream(appSettingFile).Build(); builder.Configuration.AddConfiguration(configuration); } MauiApp app = builder.Build(); AppSettingsModel? appSettings = app.Configuration.GetSection("App").Get(); if (string.IsNullOrEmpty(appSettings?.BackendApiUrl)) { throw new Exception($"can't instantiate services, due to parameters are null. backendApiUrl: '{appSettings?.BackendApiUrl}'"); } return app; } } }