You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
5 years ago
|
# 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
|