# 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