class IntroductionUpdater def initialize(user) @user = user end def get_summary summary_from_post(find_welcome_post) end def update_summary(new_value) post = find_welcome_post return unless post previous_value = summary_from_post(post).strip if previous_value != new_value revisor = PostRevisor.new(post) remaining = post.raw.split("\n")[1..-1] revisor.revise!(@user, raw: "#{new_value}\n#{remaining.join("\n")}") end end protected def summary_from_post(post) return post ? post.raw.split("\n").first : nil end def find_welcome_post topic_id = TopicCustomField.where(name: "is_welcome_topic").where(value: "true").pluck(:topic_id) unless topic_id.present? topic_id = Topic.listable_topics.where(slug: 'welcome-to-discourse').pluck(:id) end welcome_topic = Topic.where(id: topic_id).first return nil unless welcome_topic.present? post = welcome_topic.posts.where(post_number: 1).first return nil unless post.present? post end end