using System; using System.Diagnostics.CodeAnalysis; using Blazored.SessionStorage.JsonConverters; using Blazored.SessionStorage.Serialization; using Blazored.SessionStorage.StorageOptions; using Microsoft.Extensions.DependencyInjection; namespace Blazored.SessionStorage; [ExcludeFromCodeCoverage] public static class ServiceCollectionExtensions { public static IServiceCollection AddBlazoredSessionStorage(this IServiceCollection services) => AddBlazoredSessionStorage(services, null); public static IServiceCollection AddBlazoredSessionStorage(this IServiceCollection services, Action configure) { return services .AddScoped() .AddScoped() .AddScoped() .AddScoped() .Configure(configureOptions => { configure?.Invoke(configureOptions); configureOptions.JsonSerializerOptions.Converters.Add(new TimespanJsonConverter()); }); } /// /// Registers the Blazored SessionStorage services as singletons. This should only be used in Blazor WebAssembly applications. /// Using this in Blazor Server applications will cause unexpected and potentially dangerous behaviour. /// /// public static IServiceCollection AddBlazoredSessionStorageAsSingleton(this IServiceCollection services) => AddBlazoredSessionStorageAsSingleton(services, null); /// /// Registers the Blazored SessionStorage services as singletons. This should only be used in Blazor WebAssembly applications. /// Using this in Blazor Server applications will cause unexpected and potentially dangerous behaviour. /// /// /// /// public static IServiceCollection AddBlazoredSessionStorageAsSingleton(this IServiceCollection services, Action configure) { return services .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .Configure(configureOptions => { configure?.Invoke(configureOptions); configureOptions.JsonSerializerOptions.Converters.Add(new TimespanJsonConverter()); }); } }