0
0
Fork 0

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:
Eugen Rochko 2020-01-26 20:07:26 +01:00 committed by GitHub
parent 408b3e2b93
commit b9d74d4076
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 100 additions and 41 deletions

View file

@ -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