using FileTime.App.Core.Configuration; using FileTime.App.Core.Services; using FileTime.App.Core.ViewModels; using FileTime.ConsoleUI.App.Configuration; using FileTime.ConsoleUI.App.Controls; using FileTime.ConsoleUI.App.KeyInputHandling; using FileTime.ConsoleUI.App.Services; using FileTime.ConsoleUI.App.Styling; using FileTime.ConsoleUI.App.UserCommand; using FileTime.Core.Interactions; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace FileTime.ConsoleUI.App; public class StartupHandler : IStartupHandler { public StartupHandler(IIdentifiableUserCommandService identifiableUserCommandService) { identifiableUserCommandService.AddIdentifiableUserCommand(NextPreviewUserCommand.Instance); identifiableUserCommandService.AddIdentifiableUserCommand(PreviousPreviewUserCommand.Instance); } public Task InitAsync() => Task.CompletedTask; } public static class Startup { public static IServiceCollection AddConsoleServices(this IServiceCollection services, IConfigurationRoot configuration) { services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(sp => sp.GetRequiredService()); services.TryAddSingleton(); services.TryAddSingleton, ConsoleAppKeyService>(); services.TryAddSingleton(); services.AddSingleton(); services.TryAddSingleton(new ApplicationConfiguration(true)); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(sp => sp.GetRequiredService()); services.AddSingleton(); services.AddSingleton(); services.TryAddSingleton(); services.Configure(configuration); services.Configure(configuration.GetSection("Style")); return services; } public static IServiceCollection AddSettings(this IServiceCollection services) { services.TryAddSingleton(new TabPersistenceSettings {LoadState = false, SaveState = false}); return services; } public static IServiceCollection AddConsoleViews(this IServiceCollection services) { services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); return services; } }