From 40b4aadc501bd226cd6bf9080d5212418aaa7dea Mon Sep 17 00:00:00 2001 From: Gabriel Grubba Date: Wed, 30 Oct 2024 10:55:33 -0300 Subject: [PATCH 1/2] FEATURE: Add modifier to update the assigned count and exclude solved topics --- .../assigned_reminder_exclude_solved.rb | 10 +++++++++ plugin.rb | 1 + spec/integration/solved_spec.rb | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/app/lib/plugin_initializers/assigned_reminder_exclude_solved.rb b/app/lib/plugin_initializers/assigned_reminder_exclude_solved.rb index f3aa8f85..848536e1 100644 --- a/app/lib/plugin_initializers/assigned_reminder_exclude_solved.rb +++ b/app/lib/plugin_initializers/assigned_reminder_exclude_solved.rb @@ -27,4 +27,14 @@ def apply_plugin_api end end end + + class AssignedCountForUserQuery < PluginInitializer + def apply_plugin_api + plugin.register_modifier(:assigned_count_for_user_query) do |query, user| + next query if !SiteSetting.ignore_solved_topics_in_assigned_reminder + next query if SiteSetting.assignment_status_on_solve.blank? + query.where.not(status: SiteSetting.assignment_status_on_solve) + end + end + end end diff --git a/plugin.rb b/plugin.rb index dc8f32b3..2930ac95 100644 --- a/plugin.rb +++ b/plugin.rb @@ -47,6 +47,7 @@ class Engine < ::Rails::Engine require_relative "app/lib/plugin_initializers/assigned_reminder_exclude_solved" DiscourseSolved::AssignsReminderForTopicsQuery.new(self).apply_plugin_api + DiscourseSolved::AssignedCountForUserQuery.new(self).apply_plugin_api module ::DiscourseSolved def self.accept_answer!(post, acting_user, topic: nil) topic ||= post.topic diff --git a/spec/integration/solved_spec.rb b/spec/integration/solved_spec.rb index 75e4a900..9d43ef46 100644 --- a/spec/integration/solved_spec.rb +++ b/spec/integration/solved_spec.rb @@ -532,6 +532,27 @@ expect(topics).to include(other_topic) end end + + describe "assigned count for user" do + it "does not count solved topics using assignment_status_on_solve status" do + SiteSetting.ignore_solved_topics_in_assigned_reminder = true + + other_topic = Fabricate(:topic, title: "Topic that should be there") + post = Fabricate(:post, topic: other_topic, user: user) + + other_topic2 = Fabricate(:topic, title: "Topic that should be there2") + post2 = Fabricate(:post, topic: other_topic2, user: user) + + Assigner.new(post.topic, user).assign(user) + Assigner.new(post2.topic, user).assign(user) + + reminder = PendingAssignsReminder.new + expect(reminder.send(:assigned_count_for, user)).to eq(2) + + DiscourseSolved.accept_answer!(post2, Discourse.system_user) + expect(reminder.send(:assigned_count_for, user)).to eq(1) + end + end end end From 969bcb725840f947448e4ea158098fae672bf984 Mon Sep 17 00:00:00 2001 From: Gabriel Grubba Date: Wed, 30 Oct 2024 10:56:36 -0300 Subject: [PATCH 2/2] DEV: lint solved_spec.rb --- spec/integration/solved_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/integration/solved_spec.rb b/spec/integration/solved_spec.rb index 9d43ef46..e4120e01 100644 --- a/spec/integration/solved_spec.rb +++ b/spec/integration/solved_spec.rb @@ -545,7 +545,7 @@ Assigner.new(post.topic, user).assign(user) Assigner.new(post2.topic, user).assign(user) - + reminder = PendingAssignsReminder.new expect(reminder.send(:assigned_count_for, user)).to eq(2)