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);
        }
Beispiel #4
0
        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);
        }