Add conversations API (#8832)
* Add conversations API * Add web UI for conversations * Add test for conversations API * Add tests for ConversationAccount * Improve web UI * Rename ConversationAccount to AccountConversation * Remove conversations on block and mute * Change last_status_id to be a denormalization of status_ids * Add optimistic locking
This commit is contained in:
@ -4,6 +4,9 @@ class BlockWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(account_id, target_account_id)
|
||||
AfterBlockService.new.call(Account.find(account_id), Account.find(target_account_id))
|
||||
AfterBlockService.new.call(
|
||||
Account.find(account_id),
|
||||
Account.find(target_account_id)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
12
app/workers/mute_worker.rb
Normal file
12
app/workers/mute_worker.rb
Normal file
@ -0,0 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class MuteWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(account_id, target_account_id)
|
||||
FeedManager.instance.clear_from_timeline(
|
||||
Account.find(account_id),
|
||||
Account.find(target_account_id)
|
||||
)
|
||||
end
|
||||
end
|
15
app/workers/push_conversation_worker.rb
Normal file
15
app/workers/push_conversation_worker.rb
Normal file
@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class PushConversationWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(conversation_account_id)
|
||||
conversation = AccountConversation.find(conversation_account_id)
|
||||
message = InlineRenderer.render(conversation, conversation.account, :conversation)
|
||||
timeline_id = "timeline:direct:#{conversation.account_id}"
|
||||
|
||||
Redis.current.publish(timeline_id, Oj.dump(event: :conversation, payload: message, queued_at: (Time.now.to_f * 1000.0).to_i))
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user