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:
parent
c197daa04c
commit
0d289a5690
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue