public static PwaBuilder MakeCloudscribeAdminPagesNetworkOnly(this PwaBuilder builder) { builder.Services.AddScoped <INavigationNodeServiceWorkerFilter, AdminNodeServiceWorkerPreCacheFilter>(); builder.Services.AddScoped <INetworkOnlyUrlProvider, NetworkOnlyUrlProvider>(); return(builder); }
public static PwaBuilder AddCloudscribeCoreIntegration(this PwaBuilder builder) { builder.Services.AddScoped <IPwaRouteNameProvider, PwaRouteNameProvider>(); builder.Services.AddScoped <IUserIdResolver, UserIdResolver>(); builder.Services.AddScoped <ITenantIdResolver, TenantIdResolver>(); return(builder); }
/// <summary> /// precaches urls for all image files found under site upload area /// </summary> /// <param name="builder"></param> /// <returns></returns> public static PwaBuilder PreCacheContentFiles(this PwaBuilder builder) { builder.Services.Configure <PwaContentFilesPreCacheOptions>(builder.Configuration.GetSection("PwaContentFilesPreCacheOptions")); builder.Services.AddScoped <IRuntimeCacheItemProvider, ContentFilesRuntimeCacheItemProvider>(); builder.Services.AddScoped <IHandleFilesUploaded, FileUploadCacheUpdateHandler>(); return(builder); }
public static PwaBuilder PreCacheAllSimpleContentUrls(this PwaBuilder builder) { builder.Services.AddScoped <IRuntimeCacheItemProvider, BlogRuntimeCacheItemProvider>(); builder.Services.AddScoped <IHandlePageCreated, PageCreatedNotifyServiceWorkerCache>(); builder.Services.AddScoped <IHandlePageUpdated, PageUpdatedNotifyServiceWorkerCache>(); builder.Services.AddScoped <IHandlePagePreDelete, PageDeleteNotifyServiceWorkerCache>(); builder.Services.AddScoped <IHandlePostCreated, PostCreatedNotifyServiceWorkerCache>(); builder.Services.AddScoped <IHandlePostUpdated, PostUpdatedNotifyServiceWorkerCache>(); builder.Services.AddScoped <IHandlePostPreDelete, PostDeleteNotifyServiceWorkerCache>(); return(builder); }
public static PwaBuilder AddPwaKit( this IServiceCollection services, IConfiguration config ) { var builder = new PwaBuilder(services, config); services.Configure <PwaOptions>(config.GetSection("PwaOptions")); services.Configure <PwaPreCacheItems>(config.GetSection("PwaPreCacheItems")); services.Configure <PwaRuntimeCacheItems>(config.GetSection("PwaRuntimeCacheItems")); services.Configure <PushClientSettings>(config.GetSection("PushServiceClient")); services.AddScoped <IRuntimeCacheItemProvider, ConfigRuntimeCacheItemProvider>(); services.AddScoped <IPreCacheItemProvider, ConfigPreCacheItemProvider>(); services.AddScoped <IPreCacheItemProvider, OfflinePageCacheItemProvider>(); services.TryAddScoped <IServiceWorkerBuilder, ServiceWorkerBuilder>(); services.TryAddScoped <IPwaRouteNameProvider, DefaultPwaRouteNameProvider>(); services.TryAddScoped <IOfflinePageUrlProvider, OfflinePageUrlProvider>(); services.TryAddScoped <IWorkboxCacheSuffixProvider, ConfigWorkboxCacheSuffixProvider>(); services.TryAddScoped <IConfigureServiceWorkerReloading, DefaultConfigureServiceWorkerReloading>(); services.TryAddScoped <IConfigureWorkboxPreCache, DefaultConfigureWorkboxPreCache>(); services.TryAddScoped <IConfigureWorkboxNetworkOnlyRoutes, DefaultConfigureWorkboxNetworkOnlyRoutes>(); services.TryAddScoped <IConfigureWorkboxCacheFirstRoutes, DefaultConfigureWorkboxCacheFirstRoutes>(); services.TryAddScoped <IConfigureWorkboxNetworkFirstRoutes, DefaultConfigureWorkboxNetworkFirstRoutes>(); services.TryAddScoped <IConfigureWorkboxCatchHandler, DefaultConfigureWorkboxCatchHandler>(); services.TryAddScoped <IGeneratePwaInitScript, DefaultGeneratePwaInitScript>(); services.TryAddScoped <IConfigureWorkboxOfflineGoogleAnalytics, DefaultConfigureWorkboxOfflineGoogleAnalytics>(); services.TryAddScoped <IConfigureServiceWorkerPushNotification, DefaultConfigureServiceWorkerPushNotification>(); services.TryAddScoped <IConfigurePushApiMethods, DefaultConfigurePushApiMethods>(); services.TryAddScoped <IUserIdResolver, DefaultUserIdResolver>(); services.TryAddScoped <ITenantIdResolver, DefaultTenantIdResolver>(); services.AddTransient <ITagHelperComponent, ServiceWorkerTagHelperComponent>(); services.AddMemoryCache(); services.AddMemoryVapidTokenCache(); services.AddPushServiceClient(options => { IConfigurationSection pushNotificationServiceConfigurationSection = config.GetSection(nameof(PushServiceClient)); options.Subject = pushNotificationServiceConfigurationSection.GetValue <string>(nameof(options.Subject)); options.PublicKey = pushNotificationServiceConfigurationSection.GetValue <string>(nameof(options.PublicKey)); options.PrivateKey = pushNotificationServiceConfigurationSection.GetValue <string>(nameof(options.PrivateKey)); }); services.AddTransient <IPushNotificationService, PushServicePushNotificationService>(); services.AddSingleton <IPushNotificationsQueue, PushNotificationQueue>(); services.AddSingleton <IHostedService, PushNotificationBackgroundTask>(); services.AddSingleton <IPushNotificationRecipientProvider, AllSubscribersPushNotificationRecipientProvider>(); services.AddSingleton <IPushNotificationRecipientProvider, AllButCurrentUserPushNotificationRecipientProvider>(); services.AddSingleton <IPushNotificationRecipientProvider, SingleUserPushNotificationRecipientProvider>(); return(builder); }
/// <summary> /// this will cause the cahce to be cleared and re-popualated if site settings are updated /// </summary> /// <param name="builder"></param> /// <returns></returns> public static PwaBuilder UseSiteLastModifiedAsCacheSuffix(this PwaBuilder builder) { builder.Services.AddScoped <IWorkboxCacheSuffixProvider, LastModifiedWorkboxCacheSuffixProvider>(); return(builder); }
public static PwaBuilder PreCacheNavigationMenuUrls(this PwaBuilder builder) { builder.Services.AddScoped <IRuntimeCacheItemProvider, NavigationRuntimeCacheItemProvider>(); return(builder); }