# frozen_string_literal: true # == Schema Information # # Table name: emoji_reactions # # id :bigint(8) not null, primary key # account_id :bigint(8) not null # status_id :bigint(8) not null # name :string default(""), not null # custom_emoji_id :bigint(8) # created_at :datetime not null # updated_at :datetime not null # uri :string # class EmojiReaction < ApplicationRecord include Paginable after_commit :queue_publish after_commit :refresh_status belongs_to :account belongs_to :status, -> { unscope(where: :expired_at) }, inverse_of: :emoji_reactions belongs_to :custom_emoji, optional: true has_one :notification, as: :activity, dependent: :destroy scope :local, -> { where(uri: nil) } scope :remote, -> { where.not(uri: nil) } validates :name, presence: true validates_with EmojiReactionValidator before_validation do self.status = status.reblog if status&.reblog? end def sign? true end def object_type :emoji_reaction end private def queue_publish PublishEmojiReactionWorker.perform_async(status_id, account_id, name) unless status.destroyed? end def refresh_status status.refresh_grouped_emoji_reactions! unless status.destroyed? end end