/// <summary> /// Adds support to Blazor for the Fluxor library /// </summary> /// <param name="serviceCollection">The service collection</param> /// <param name="configure">A callback used to configure options</param> /// <returns>The service collection</returns> /// <example> /// services.AddFluxor(options => options /// .ScanAssemblies(typeof(Program).Assembly)); /// </example> public static IServiceCollection AddFluxor( this IServiceCollection serviceCollection, Action <FluxorOptions> configure = null) { // We only use an instance so middleware can create extensions to the Options var options = new FluxorOptions(serviceCollection); configure?.Invoke(options); // Register all middleware types with dependency injection foreach (Type middlewareType in options.MiddlewareTypes) { serviceCollection.AddScoped(middlewareType); } IEnumerable <AssemblyScanSettings> scanIncludeList = options.MiddlewareTypes .Select(t => new AssemblyScanSettings(t.Assembly, t.Namespace)); DependencyScanner.Scan( options: options, serviceCollection: serviceCollection, assembliesToScan: options.AssembliesToScan, scanIncludeList: scanIncludeList); serviceCollection.AddScoped(typeof(IState <>), typeof(State <>)); return(serviceCollection); }
public static FluxorOptions UsePersist(this FluxorOptions options, Action <PersistMiddlewareOptions> persistMiddlewareOptions = null) { var middlewareOptions = new PersistMiddlewareOptions(); persistMiddlewareOptions?.Invoke(middlewareOptions); options.AddMiddleware <PersistMiddleware>(); options.Services.AddScoped(_ => middlewareOptions); return(options); }
/// <summary> /// Enables interaction with the brower tool Redux Dev Tools /// </summary> /// <param name="options">The current options</param> /// <param name="updateReduxOptions">An action to update the options</param> /// <returns></returns> public static FluxorOptions UseReduxDevTools( this FluxorOptions options, Action <ReduxDevToolsMiddlewareOptions> updateReduxOptions = null) { var reduxOptions = new ReduxDevToolsMiddlewareOptions(options); updateReduxOptions?.Invoke(reduxOptions); options.AddMiddleware <ReduxDevToolsMiddleware>(); options.Services.AddScoped <ReduxDevToolsInterop>(); options.Services.AddScoped(_ => reduxOptions); options.UseRouting(); return(options); }
public ReduxDevToolsMiddlewareOptions(FluxorOptions fluxorOptions) { FluxorOptions = fluxorOptions; }
public static FluxorOptions UseRouting(this FluxorOptions options) { options.AddMiddleware <RoutingMiddleware>(); return(options); }