diff --git a/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs b/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs
index 208007d7..40d6b31a 100644
--- a/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs
+++ b/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs
@@ -284,6 +284,25 @@
{{/if}}
{{#if watchCategories}}
+
+
+
+
+
+
+ {{wizard-mapper
+ inputs=action.categories
+ property='categories'
+ onUpdate=(action 'mappedFieldUpdated')
+ options=(hash
+ textSelection='key,value'
+ wizardFieldSelection=true
+ userFieldSelection='key,value'
+ context='action'
+ )}}
+
+
+
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index f47d7e95..a601fbe5 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -211,6 +211,7 @@ en:
watch_categories:
label: "Watch Categories"
mute_remainder: "Mute Remainder"
+ categories: "Categories"
post_builder:
checkbox: "Post Builder"
label: "Builder"
diff --git a/controllers/custom_wizard/admin/wizard.rb b/controllers/custom_wizard/admin/wizard.rb
index b15dcf65..0f155fbe 100644
--- a/controllers/custom_wizard/admin/wizard.rb
+++ b/controllers/custom_wizard/admin/wizard.rb
@@ -122,6 +122,7 @@ class CustomWizard::AdminWizardController < CustomWizard::AdminController
custom_fields: mapped_params,
required: mapped_params,
recipient: mapped_params,
+ categories: mapped_params,
mute_remainder: mapped_params,
profile_updates: mapped_params,
group: mapped_params,
diff --git a/lib/custom_wizard/action.rb b/lib/custom_wizard/action.rb
index e0b84257..c3c6fbe5 100644
--- a/lib/custom_wizard/action.rb
+++ b/lib/custom_wizard/action.rb
@@ -134,10 +134,21 @@ class CustomWizard::Action
end
def watch_categories
- key, watched_categories = data.first
- mute_remainder = data.values[1]
+
+ watched_categories_map = CustomWizard::Mapper.new(
+ inputs: action['categories'],
+ data: data,
+ user: user
+ ).perform
+
+ mute_remainder = CustomWizard::Mapper.new(
+ inputs: action['mute_remainder'],
+ data: data,
+ user: user
+ ).perform
+
Category.all.each do |category|
- if watched_categories.include?(category.id.to_s)
+ if watched_categories_map.include?(category.id.to_s)
CategoryUser.set_notification_level_for_category(user, CategoryUser.notification_levels[:watching], category.id)
elsif mute_remainder
CategoryUser.set_notification_level_for_category(user, CategoryUser.notification_levels[:muted], category.id)