using System; using System.Net.Http; using Blazorise.Bootstrap5; using Blazorise.Icons.FontAwesome; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Himp.TaskScheduling.Blazor.WebAssembly; using Volo.Abp.Account; using Volo.Abp.AspNetCore.Components.Web.Theming.Routing; using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme; using Volo.Abp.Autofac.WebAssembly; using Volo.Abp.AutoMapper; using Volo.Abp.Identity.Blazor.WebAssembly; using Volo.Abp.Modularity; using Volo.Abp.SettingManagement.Blazor.WebAssembly; using Volo.Abp.TenantManagement.Blazor.WebAssembly; using Volo.Abp.UI.Navigation; namespace Himp.TaskScheduling.Blazor.Host.Client; [DependsOn( typeof(AbpAutofacWebAssemblyModule), typeof(AbpAspNetCoreComponentsWebAssemblyBasicThemeModule), typeof(AbpAccountApplicationContractsModule), typeof(AbpIdentityBlazorWebAssemblyModule), typeof(AbpTenantManagementBlazorWebAssemblyModule), typeof(AbpSettingManagementBlazorWebAssemblyModule), typeof(TaskSchedulingBlazorWebAssemblyModule) )] public class TaskSchedulingBlazorHostClientModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { var environment = context.Services.GetSingletonInstance(); var builder = context.Services.GetSingletonInstance(); ConfigureAuthentication(builder); ConfigureHttpClient(context, environment); ConfigureBlazorise(context); ConfigureRouter(context); ConfigureMenu(context); ConfigureAutoMapper(context); } private void ConfigureRouter(ServiceConfigurationContext context) { Configure(options => { options.AppAssembly = typeof(TaskSchedulingBlazorHostClientModule).Assembly; }); } private void ConfigureMenu(ServiceConfigurationContext context) { Configure(options => { options.MenuContributors.Add(new TaskSchedulingHostMenuContributor(context.Services.GetConfiguration())); }); } private void ConfigureBlazorise(ServiceConfigurationContext context) { context.Services .AddBootstrap5Providers() .AddFontAwesomeIcons(); } private static void ConfigureAuthentication(WebAssemblyHostBuilder builder) { builder.Services.AddOidcAuthentication(options => { builder.Configuration.Bind("AuthServer", options.ProviderOptions); options.ProviderOptions.DefaultScopes.Add("TaskScheduling"); }); } private static void ConfigureHttpClient(ServiceConfigurationContext context, IWebAssemblyHostEnvironment environment) { context.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(environment.BaseAddress) }); } private void ConfigureAutoMapper(ServiceConfigurationContext context) { Configure(options => { options.AddMaps(); }); } }