mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-07-15 15:19:57 +00:00
52 lines
1.9 KiB
C#
52 lines
1.9 KiB
C#
using Daybreak.Configuration.Options;
|
|
using Daybreak.Extensions;
|
|
using Daybreak.Services.Options;
|
|
using Daybreak.Services.Plugins;
|
|
using Daybreak.Services.Themes;
|
|
using Daybreak.Shared.Services.Options;
|
|
using Daybreak.Shared.Services.Plugins;
|
|
using Daybreak.Shared.Services.Themes;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System.Extensions;
|
|
|
|
namespace Daybreak.Launch;
|
|
|
|
public partial class Launcher
|
|
{
|
|
public static ServiceProvider SetupBootstrap()
|
|
{
|
|
var serviceCollection = new ServiceCollection();
|
|
SetupLogging(serviceCollection);
|
|
BootstrapOptionsManager(serviceCollection);
|
|
BootstrapThemeOptions(serviceCollection);
|
|
BootstrapScreenManagerOptions(serviceCollection);
|
|
BootstrapPluginsService(serviceCollection);
|
|
return serviceCollection.BuildServiceProvider();
|
|
}
|
|
|
|
private static void BootstrapPluginsService(IServiceCollection services)
|
|
{
|
|
services.AddDaybreakOptions<PluginsServiceOptions>();
|
|
services.AddSingleton<IPluginsService, PluginsService>();
|
|
}
|
|
|
|
private static void BootstrapOptionsManager(IServiceCollection services)
|
|
{
|
|
services.AddSingleton<OptionsManager>();
|
|
services.AddSingleton<IOptionsProvider>(sp => sp.GetRequiredService<OptionsManager>());
|
|
}
|
|
|
|
private static void BootstrapThemeOptions(IServiceCollection services)
|
|
{
|
|
services.AddDaybreakOptions<ThemeOptions>();
|
|
services.AddSingleton<IThemeManager, BlazorThemeInteropService>();
|
|
services.AddHostedService(sp => sp.GetRequiredService<IThemeManager>().Cast<BlazorThemeInteropService>());
|
|
}
|
|
|
|
private static void BootstrapScreenManagerOptions(IServiceCollection services)
|
|
{
|
|
// Only register options here - actual ScreenManager is registered by platform-specific configuration
|
|
services.AddDaybreakOptions<ScreenManagerOptions>();
|
|
}
|
|
}
|