using System.Runtime.InteropServices; using FileTime.Avalonia.Application; using FileTime.Avalonia.IconProviders; using FileTime.Avalonia.Services; using FileTime.Avalonia.ViewModels; using FileTime.Core.Command; using FileTime.Core.Interactions; using Microsoft.Extensions.DependencyInjection; namespace FileTime.Avalonia { internal static class Startup { internal static IServiceCollection AddViewModels(this IServiceCollection serviceCollection) { return serviceCollection .AddSingleton() .AddTransient() .AddSingleton(); } internal static IServiceCollection AddServices(this IServiceCollection serviceCollection) { serviceCollection = serviceCollection .AddLogging() .AddSingleton() .AddSingleton() .AddSingleton(); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { serviceCollection.AddSingleton(); } else { serviceCollection.AddSingleton(); } return serviceCollection; } internal static IServiceCollection RegisterCommandHandlers(this IServiceCollection serviceCollection) { foreach (var commandHandler in FileTime.Providers.Local.Startup.GetCommandHandlers()) { serviceCollection.AddTransient(typeof(ICommandHandler), commandHandler); } return serviceCollection; } } }