From e3c24ba2f2c24fe073d7e65e5f247849311894f6 Mon Sep 17 00:00:00 2001 From: Gabriel Grubba <70247653+Grubba27@users.noreply.github.com> Date: Wed, 8 May 2024 20:17:36 +0200 Subject: [PATCH] FEATURE: Add pending assign reminder threshold setting (#571) * FEATURE: Add pending assign reminder threshold setting User can define a threshold for the pending assign reminder. * DEV: rename REMINDER_THRESHOLD with SiteSetting --- config/locales/server.en.yml | 1 + config/settings.yml | 4 ++++ lib/pending_assigns_reminder.rb | 3 +-- spec/jobs/scheduled/enqueue_reminders_spec.rb | 4 ++-- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 6dd4b54..166cf52 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -14,6 +14,7 @@ en: assign_mailer: "When to send notification email for assignments" remind_assigns: "Remind users about pending assigns." remind_assigns_frequency: "Frequency for reminding users about assigned topics." + pending_assign_reminder_threshold: "Number of pending assignments that triggers a reminder notification." max_assigned_topics: "Maximum number of topics that can be assigned to a user." assign_allowed_on_groups: "Users in these groups are allowed to assign topics and can be assigned topics." enable_assign_status: "Add a customizable status field to every assignment." diff --git a/config/settings.yml b/config/settings.yml index e7f97f7..795e0f0 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -23,6 +23,10 @@ discourse_assign: client: true enum: "RemindAssignsFrequencySiteSettings" default: 0 + pending_assign_reminder_threshold: + client: true + default: 2 + min: 1 max_assigned_topics: client: true default: 10 diff --git a/lib/pending_assigns_reminder.rb b/lib/pending_assigns_reminder.rb index 9c50cd4..ba24d6b 100644 --- a/lib/pending_assigns_reminder.rb +++ b/lib/pending_assigns_reminder.rb @@ -4,11 +4,10 @@ class PendingAssignsReminder REMINDED_AT = "last_reminded_at" REMINDERS_FREQUENCY = "remind_assigns_frequency" CUSTOM_FIELD_NAME = "assigns_reminder" - REMINDER_THRESHOLD = 2 def remind(user) newest_topics = assigned_topics(user, order: :desc) - return if newest_topics.size < REMINDER_THRESHOLD + return if newest_topics.size < SiteSetting.pending_assign_reminder_threshold delete_previous_reminders(user) diff --git a/spec/jobs/scheduled/enqueue_reminders_spec.rb b/spec/jobs/scheduled/enqueue_reminders_spec.rb index bb19349..2c957b9 100644 --- a/spec/jobs/scheduled/enqueue_reminders_spec.rb +++ b/spec/jobs/scheduled/enqueue_reminders_spec.rb @@ -40,7 +40,7 @@ RSpec.describe Jobs::EnqueueReminders do it "doesn't count assigns from deleted topics" do deleted_post = Fabricate(:post) assign_one_task_to(user, post: deleted_post) - (PendingAssignsReminder::REMINDER_THRESHOLD - 1).times { assign_one_task_to(user) } + (SiteSetting.pending_assign_reminder_threshold - 1).times { assign_one_task_to(user) } deleted_post.topic.trash! @@ -115,7 +115,7 @@ RSpec.describe Jobs::EnqueueReminders do end def assign_multiple_tasks_to(user, assigned_on: 3.months.ago) - PendingAssignsReminder::REMINDER_THRESHOLD.times do + SiteSetting.pending_assign_reminder_threshold.times do assign_one_task_to(user, assigned_on: assigned_on) end end