1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # frozen_string_literal: true
- # == Schema Information
- #
- # Table name: encrypted_messages
- #
- # id :bigint(8) not null, primary key
- # device_id :bigint(8)
- # from_account_id :bigint(8)
- # from_device_id :string default(""), not null
- # type :integer default(0), not null
- # body :text default(""), not null
- # digest :text default(""), not null
- # message_franking :text default(""), not null
- # created_at :datetime not null
- # updated_at :datetime not null
- #
- class EncryptedMessage < ApplicationRecord
- self.inheritance_column = nil
- include Paginable
- scope :up_to, ->(id) { where(arel_table[:id].lteq(id)) }
- belongs_to :device
- belongs_to :from_account, class_name: 'Account'
- around_create Mastodon::Snowflake::Callbacks
- after_commit :push_to_streaming_api
- private
- def push_to_streaming_api
- Rails.logger.info(streaming_channel)
- Rails.logger.info(subscribed_to_timeline?)
- return if destroyed? || !subscribed_to_timeline?
- PushEncryptedMessageWorker.perform_async(id)
- end
- def subscribed_to_timeline?
- Redis.current.exists("subscribed:#{streaming_channel}")
- end
- def streaming_channel
- "timeline:#{device.account_id}:#{device.device_id}"
- end
- end
|