mirror of
https://github.com/discourse/discourse.git
synced 2024-12-30 08:24:32 +08:00
edec941a87
This commit introduces a few changes as a result of customer issues with finding why a topic was relisted. In one case, if a user edited the OP of a topic that was unlisted and hidden because of too many flags, the topic would get relisted by directly changing topic.visible, instead of going via TopicStatusUpdater. To improve tracking we: * Introduce a visibility_reason_id to topic which functions in a similar way to hidden_reason_id on post, this column is set from the various places we change topic visibility * Fix Post#unhide! which was directly modifying topic.visible, instead we use TopicStatusUpdater which sets visibility_reason_id and also makes a small action post * Show the reason topic visibility changed when hovering the unlisted icon in topic status on topic titles
19 lines
453 B
Ruby
19 lines
453 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Jobs
|
|
class MakeEmbeddedTopicVisible < ::Jobs::Base
|
|
def execute(args)
|
|
raise Discourse::InvalidParameters.new(:topic_id) if args[:topic_id].blank?
|
|
|
|
if topic = Topic.find_by(id: args[:topic_id])
|
|
topic.update_status(
|
|
"visible",
|
|
true,
|
|
topic.user,
|
|
{ visibility_reason_id: Topic.visibility_reasons[:embedded_topic] },
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|