# frozen_string_literal: true class PushUpdateWorker include Sidekiq::Worker include Redisable def perform(account_id, status_id, timeline_id = nil, options = {}) @account = Account.find(account_id) @status = Status.find(status_id) @timeline_id = timeline_id || "timeline:#{account.id}" @options = options.symbolize_keys publish! rescue ActiveRecord::RecordNotFound true end private def payload InlineRenderer.render(@status, @account, :status) end def message Oj.dump( event: update? ? :'status.update' : :update, payload: payload, queued_at: (Time.now.to_f * 1000.0).to_i ) end def publish! redis.publish(@timeline_id, message) end def update? @options[:update] end end