discourse/plugins/automation/lib/discourse_automation/scripts/pin_topic.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

22 lines
660 B
Ruby
Raw Normal View History

# frozen_string_literal: true
DiscourseAutomation::Scriptable.add(DiscourseAutomation::Scripts::PIN_TOPIC) do
field :pinnable_topic, component: :text, required: true
field :pinned_until, component: :date_time
field :pinned_globally, component: :boolean
version 1
triggerables [:point_in_time]
script do |_context, fields|
next unless topic_id = fields.dig("pinnable_topic", "value")
next unless topic = Topic.find_by(id: topic_id)
pinned_globally = fields.dig("pinned_globally", "value") || false
pinned_until = fields.dig("pinned_until", "value") || nil
topic.update_pinned(true, pinned_globally, pinned_until)
end
end