Add streaming API updates for announcements being modified or deleted (#12963)
Change `all_day` to be a visual client-side cue only Publish immediately if `scheduled_at` is in the past Add `published_at` and `updated_at` to announcements JSON
This commit is contained in:
parent
408b3e2b93
commit
b9d74d4076
12 changed files with 100 additions and 41 deletions
|
@ -16,8 +16,6 @@
|
|||
#
|
||||
|
||||
class Announcement < ApplicationRecord
|
||||
after_commit :queue_publish, on: :create
|
||||
|
||||
scope :unpublished, -> { where(published: false) }
|
||||
scope :published, -> { where(published: true) }
|
||||
scope :without_muted, ->(account) { joins("LEFT OUTER JOIN announcement_mutes ON announcement_mutes.announcement_id = announcements.id AND announcement_mutes.account_id = #{account.id}").where('announcement_mutes.id IS NULL') }
|
||||
|
@ -31,8 +29,11 @@ class Announcement < ApplicationRecord
|
|||
validates :ends_at, presence: true, if: -> { starts_at.present? }
|
||||
|
||||
before_validation :set_all_day
|
||||
before_validation :set_starts_at, on: :create
|
||||
before_validation :set_ends_at, on: :create
|
||||
before_validation :set_published, on: :create
|
||||
|
||||
def published_at
|
||||
scheduled_at || created_at
|
||||
end
|
||||
|
||||
def time_range?
|
||||
starts_at.present? && ends_at.present?
|
||||
|
@ -71,15 +72,7 @@ class Announcement < ApplicationRecord
|
|||
self.all_day = false if starts_at.blank? || ends_at.blank?
|
||||
end
|
||||
|
||||
def set_starts_at
|
||||
self.starts_at = starts_at.change(hour: 0, min: 0, sec: 0) if all_day? && starts_at.present?
|
||||
end
|
||||
|
||||
def set_ends_at
|
||||
self.ends_at = ends_at.change(hour: 23, min: 59, sec: 59) if all_day? && ends_at.present?
|
||||
end
|
||||
|
||||
def queue_publish
|
||||
PublishScheduledAnnouncementWorker.perform_async(id) if scheduled_at.blank?
|
||||
def set_published
|
||||
self.published = true if scheduled_at.blank? || scheduled_at.past?
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue