26 lines
466 B
Ruby
26 lines
466 B
Ruby
class Notification::MarkConversationReadService
|
|
pattr_initialize [:user!, :account!, :conversation!]
|
|
|
|
def perform
|
|
return unless user.is_a?(User)
|
|
|
|
notifications.find_each do |notification|
|
|
notification.update!(read_at: read_at)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def notifications
|
|
user.notifications.where(
|
|
account: account,
|
|
primary_actor: conversation,
|
|
read_at: nil
|
|
)
|
|
end
|
|
|
|
def read_at
|
|
@read_at ||= Time.current
|
|
end
|
|
end
|