From cecec18234d4d077872b4c5e13136fed930e0bc9 Mon Sep 17 00:00:00 2001 From: Oleg Zhuk Date: Wed, 30 Oct 2024 13:12:36 +0200 Subject: [PATCH 1/2] VCST-2183: Add public store setting PushMessages.Enable feat: Added PushMessages.Enable public store settings for enabling or disabling module per store. --- .../ModuleConstants.cs | 30 ++++++++++++++++++- .../Localizations/en.PushMessages.json | 8 +++++ src/VirtoCommerce.PushMessages.Web/Module.cs | 4 +++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs b/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs index fadc9a9..823f280 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 readonly SettingDescriptor Enable = new() + { + Name = "PushMessages.Enable", + GroupName = "Push Messages|General", + ValueType = SettingValueType.Boolean, + DefaultValue = true, + IsPublic = true, + }; + + public static readonly SettingDescriptor FirebaseCloudMessagingEnable = 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", @@ -38,11 +56,12 @@ public static class General ValueType = SettingValueType.Integer, DefaultValue = 50, }; - public static IEnumerable AllGeneralSettings { get { + yield return Enable; + yield return FirebaseCloudMessagingEnable; yield return BatchSize; } } @@ -94,6 +113,15 @@ public static IEnumerable AllBackgroundJobsSettings } } + public static IEnumerable StoreSettings + { + get + { + yield return General.Enable; + yield return General.FirebaseCloudMessagingEnable; + } + } + public static IEnumerable AllSettings { get diff --git a/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json b/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json index 740afe4..9c44fd5 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 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); From 8693dacca1aab160573bde1c829342fdade3e99f Mon Sep 17 00:00:00 2001 From: Oleg Zhuk Date: Wed, 30 Oct 2024 15:43:33 +0200 Subject: [PATCH 2/2] add dynamic store property assigment if UseFirebaseCloudMessaging is true --- .../ModuleConstants.cs | 7 +++---- .../Extensions/ApplicationBuilderExtensions.cs | 12 +++++++++--- .../Localizations/en.PushMessages.json | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs b/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs index 823f280..914967e 100644 --- a/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs +++ b/src/VirtoCommerce.PushMessages.Core/ModuleConstants.cs @@ -31,7 +31,7 @@ public static class Settings { public static class General { - public static readonly SettingDescriptor Enable = new() + public static SettingDescriptor Enable { get; } = new() { Name = "PushMessages.Enable", GroupName = "Push Messages|General", @@ -40,7 +40,7 @@ public static class General IsPublic = true, }; - public static readonly SettingDescriptor FirebaseCloudMessagingEnable = new() + public static SettingDescriptor FirebaseCloudMessagingEnable { get; } = new() { Name = "PushMessages.FCM.Enable", GroupName = "Push Messages|General", @@ -56,12 +56,12 @@ public static class General ValueType = SettingValueType.Integer, DefaultValue = 50, }; + public static IEnumerable AllGeneralSettings { get { yield return Enable; - yield return FirebaseCloudMessagingEnable; yield return BatchSize; } } @@ -118,7 +118,6 @@ public static IEnumerable StoreSettings get { yield return General.Enable; - yield return General.FirebaseCloudMessagingEnable; } } 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 9c44fd5..3df9d93 100644 --- a/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json +++ b/src/VirtoCommerce.PushMessages.Web/Localizations/en.PushMessages.json @@ -13,7 +13,7 @@ }, "PushMessages.FCM.Enable": { "title": "Enable firebase cloud messaging (FCM)", - "description": "Enable or disable Firebase Cloud Messaging (FCM). Additional configuration is required use following link https://docs.virtocommerce.org/platform/user-guide/push-messages/firebase-cloud-messaging/" + "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",