diff --git a/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs b/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs index fadc9a9..914967e 100644 --- a/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs +++ b/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs @@ -31,6 +31,24 @@ public static class Settings { public static class General { + public static SettingDescriptor Enable { get; } = new() + { + Name = "PushMessages.Enable", + GroupName = "Push Messages|General", + ValueType = SettingValueType.Boolean, + DefaultValue = true, + IsPublic = true, + }; + + public static SettingDescriptor FirebaseCloudMessagingEnable { get; } = new() + { + Name = "PushMessages.FCM.Enable", + GroupName = "Push Messages|General", + ValueType = SettingValueType.Boolean, + DefaultValue = true, + IsPublic = true, + }; + public static SettingDescriptor BatchSize { get; } = new() { Name = "PushMessages.BatchSize", @@ -43,6 +61,7 @@ public static IEnumerable AllGeneralSettings { get { + yield return Enable; yield return BatchSize; } } @@ -94,6 +113,14 @@ public static IEnumerable AllBackgroundJobsSettings } } + public static IEnumerable StoreSettings + { + get + { + yield return General.Enable; + } + } + public static IEnumerable AllSettings { get diff --git a/src/VirtoCommerce.PushMessages.Data/Extensions/ApplicationBuilderExtensions.cs b/src/VirtoCommerce.PushMessages.Data/Extensions/ApplicationBuilderExtensions.cs index 49a5cb9..d633cba 100644 --- a/src/VirtoCommerce.PushMessages.Data/Extensions/ApplicationBuilderExtensions.cs +++ b/src/VirtoCommerce.PushMessages.Data/Extensions/ApplicationBuilderExtensions.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.Linq; using System.Reflection; using FirebaseAdmin; @@ -10,6 +11,7 @@ using VirtoCommerce.Platform.Core.Events; using VirtoCommerce.Platform.Core.Settings; using VirtoCommerce.Platform.Hangfire; +using VirtoCommerce.PushMessages.Core; using VirtoCommerce.PushMessages.Core.Events; using VirtoCommerce.PushMessages.Core.Models; using VirtoCommerce.PushMessages.Data.BackgroundJobs; @@ -62,13 +64,17 @@ public static void UseFirebaseCloudMessaging(this IApplicationBuilder appBuilder settingsRegistrar.RegisterSettingsForType(receiverSettings, "Store"); } - private static SettingDescriptor[] ToSettings(this FcmReceiverOptions options) + private static IList ToSettings(this FcmReceiverOptions options) { - return options + var settings = options .GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public) .Select(x => CreateSetting(x.Name, x.GetValue(options))) - .ToArray(); + .ToList(); + + settings.Insert(0, ModuleConstants.Settings.General.FirebaseCloudMessagingEnable); + + return settings; } private static SettingDescriptor CreateSetting(string name, object value) diff --git a/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json b/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json index 740afe4..3df9d93 100644 --- a/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json +++ b/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json @@ -7,6 +7,14 @@ "PushMessages:delete": "Delete PushMessages related data" }, "settings": { + "PushMessages.Enable": { + "title": "Enable push notifications", + "description": "Enable or disable push notifications" + }, + "PushMessages.FCM.Enable": { + "title": "Enable firebase cloud messaging (FCM)", + "description": "Enable or disable Firebase Cloud Messaging (FCM). Additional configuration is required use following link for configuration https://docs.virtocommerce.org/platform/user-guide/push-messages/firebase-cloud-messaging/" + }, "PushMessages.BatchSize": { "title": "Batch size", "description": "" diff --git a/src/VirtoCommerce.PushMessages.Web/Module.cs b/src/VirtoCommerce.PushMessages.Web/Module.cs index d20170d..1612d7b 100644 --- a/src/VirtoCommerce.PushMessages.Web/Module.cs +++ b/src/VirtoCommerce.PushMessages.Web/Module.cs @@ -28,6 +28,7 @@ using VirtoCommerce.PushMessages.ExperienceApi.Authorization; using VirtoCommerce.PushMessages.ExperienceApi.Extensions; using VirtoCommerce.PushMessages.ExperienceApi.Handlers; +using VirtoCommerce.StoreModule.Core.Model; using VirtoCommerce.Xapi.Core.Extensions; using VirtoCommerce.Xapi.Core.Infrastructure; @@ -99,6 +100,9 @@ public void PostInitialize(IApplicationBuilder appBuilder) var settingsRegistrar = serviceProvider.GetRequiredService(); settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id); + // Register store settings + settingsRegistrar.RegisterSettingsForType(ModuleConstants.Settings.StoreSettings, nameof(Store)); + // Register permissions var permissionsRegistrar = serviceProvider.GetRequiredService(); permissionsRegistrar.RegisterPermissions(ModuleInfo.Id, "Push Messages", ModuleConstants.Security.Permissions.AllPermissions);