UX: Do not delete narrative bot PM when skipping user tips (#28265)

Should fix https://meta.discourse.org/t/skip-tips-option-in-user-tip-should-not-delete-welcome-message/303420

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
This commit is contained in:
Penar Musaraj 2024-08-08 12:12:01 -04:00 committed by GitHub
parent c197daa04c
commit 0d289a5690
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 32 additions and 38 deletions

View File

@ -63,10 +63,6 @@ after_initialize do
self.on(:user_unstaged) { |user| user.enqueue_bot_welcome_post } self.on(:user_unstaged) { |user| user.enqueue_bot_welcome_post }
self.add_model_callback(UserOption, :after_save) do
user.delete_bot_welcome_post if saved_change_to_skip_new_user_tips? && self.skip_new_user_tips
end
self.add_to_class(:user, :enqueue_bot_welcome_post) do self.add_to_class(:user, :enqueue_bot_welcome_post) do
return if SiteSetting.disable_discourse_narrative_bot_welcome_post return if SiteSetting.disable_discourse_narrative_bot_welcome_post
@ -98,30 +94,6 @@ after_initialize do
.include?(self.username) .include?(self.username)
end end
self.add_to_class(:user, :delete_bot_welcome_post) do
data = DiscourseNarrativeBot::Store.get(self.id) || {}
topic_id = data[:topic_id]
return if topic_id.blank? || data[:track] != DiscourseNarrativeBot::NewUserNarrative.to_s
topic_user = topic_users.find_by(topic_id: topic_id)
return if topic_user.present? && topic_user.last_read_post_number.present?
topic = Topic.find_by(id: topic_id)
return if topic.blank?
first_post = topic.ordered_posts.first
notification = Notification.where(topic_id: topic.id, post_number: first_post.post_number).first
if notification.present?
Notification.read(self, notification.id)
self.reload
self.publish_notifications_state
end
PostDestroyer.new(Discourse.system_user, first_post, skip_staff_log: true).destroy
DiscourseNarrativeBot::Store.remove(self.id)
end
self.on(:post_created) do |post, options| self.on(:post_created) do |post, options|
user = post.user user = post.user

View File

@ -0,0 +1,32 @@
# frozen_string_literal: true
describe "Narrative Bot PM", type: :system do
fab!(:admin)
fab!(:user)
fab!(:topics) { Fabricate.times(2, :post).map(&:topic) }
fab!(:posts) { Fabricate.times(3, :post, topic: topics[0]) }
context "when user tips are enabled" do
before do
Jobs.run_immediately!
SiteSetting.enable_user_tips = true
SiteSetting.discourse_narrative_bot_enabled = true
# shortcut to generate welcome post since we're not going through user creation or first login
user.enqueue_bot_welcome_post
end
it "does not delete the narrative bot PM when skipping all tips" do
sign_in user
visit "/"
tooltip = PageObjects::Components::Tooltips.new("user-tip")
tooltip.find(".btn", text: "Skip tips").click
expect(tooltip).to be_not_present
expect(page).to have_css(".badge-notification.new-pms")
find("#toggle-current-user").click
expect(page).to have_css(".notification.unread.private-message", text: "Greetings!")
end
end
end

View File

@ -111,16 +111,6 @@ RSpec.describe User do
SiteSetting.default_other_skip_new_user_tips = true SiteSetting.default_other_skip_new_user_tips = true
expect { user }.to_not change { Post.count } expect { user }.to_not change { Post.count }
end end
it "should delete the existing PM" do
user.user_option.skip_new_user_tips = true
expect { user.user_option.save! }.to change { Topic.count }.by(-1).and not_change {
UserHistory.count
}.and change { user.unread_high_priority_notifications }.by(-1).and change {
user.notifications.count
}.by(-1)
end
end end
context "when user is anonymous?" do context "when user is anonymous?" do