FIX: hide welcome topic banner as soon as the welcome topic is edited (#18125)

* FIX: hide welcome topic banner as soon as the welcome topic is edited

This commit adds a message bus listener on client to hide the welcome
topic banner as soon as the welcome topic is edited.

* update test

* only subscribe when show_welcome_topic_banner is true

* Do not lookup for messageBus service if it's not required

* Remove unneeded code

* Cache result for Site.show_welcome_topic_banner

* Update tests per latest changes

* Changes per PR review
This commit is contained in:
Arpit Jalan
2022-09-01 09:44:21 +05:30
committed by GitHub
parent 8fa9f0cf92
commit 3aaf4dcfd0
5 changed files with 70 additions and 6 deletions

View File

@@ -203,10 +203,24 @@ class Site
MessageBus.publish(SITE_JSON_CHANNEL, '')
end
def self.show_welcome_topic_banner?(guardian)
return false unless guardian.is_admin?
return false unless guardian.user.id == User.first_login_admin_id
def self.welcome_topic_banner_cache_key(user_id)
"show_welcome_topic_banner:#{user_id}"
end
Post.find_by("topic_id = :topic_id AND post_number = 1 AND version = 1 AND created_at > :created_at", topic_id: SiteSetting.welcome_topic_id, created_at: 1.month.ago).present?
def self.show_welcome_topic_banner?(guardian)
return false if !guardian.is_admin?
user_id = guardian.user.id
show_welcome_topic_banner = Discourse.cache.read(welcome_topic_banner_cache_key(user_id))
return show_welcome_topic_banner unless show_welcome_topic_banner.nil?
show_welcome_topic_banner = if (user_id == User.first_login_admin_id)
Post.find_by("topic_id = :topic_id AND post_number = 1 AND version = 1 AND created_at > :created_at", topic_id: SiteSetting.welcome_topic_id, created_at: 1.month.ago).present?
else
false
end
Discourse.cache.write(welcome_topic_banner_cache_key(user_id), show_welcome_topic_banner)
show_welcome_topic_banner
end
end