Skip to content

Commit

Permalink
use a background job to mark discussion as read from email open (#10903)
Browse files Browse the repository at this point in the history
  • Loading branch information
robguthrie committed Jun 15, 2024
1 parent cd82c44 commit 42d9399
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
10 changes: 7 additions & 3 deletions app/controllers/email_actions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,13 @@ def unfollow_discussion
end

def mark_discussion_as_read
DiscussionService.mark_as_read(discussion: discussion,
params: {ranges: event.sequence_id},
actor: user)
GenericWorker.perform_async(
'DiscussionService',
'mark_as_read_simple_params',
discussion.id,
event.sequence_id || [],
user.id,
)
event.notifications.where(user: user).update_all(viewed: true)
respond_with_pixel
rescue ActiveRecord::RecordNotFound
Expand Down
6 changes: 6 additions & 0 deletions app/services/discussion_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,12 @@ def self.mark_as_seen(discussion:, actor:)
EventBus.broadcast('discussion_mark_as_seen', reader, actor)
end

def self.mark_as_read_simple_params(discussion_id, ranges, actor_id)
discussion = Discussion.find(discussion_id)
actor = User.find(actor_id)
mark_as_read(discussion: discussion, params: {ranges: ranges}, actor: actor)
end

def self.mark_as_read(discussion:, params:, actor:)
actor.ability.authorize! :mark_as_read, discussion
RetryOnError.with_limit(2) do
Expand Down

0 comments on commit 42d9399

Please sign in to comment.