aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/chat/message_reference.ex
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-06-07 15:38:33 +0200
committerlain <lain@soykaf.club>2020-06-07 15:38:33 +0200
commit801e668a97adff4a33451dd7bb48799562ed8796 (patch)
tree414a1da874261e9ea1c0290428daaf8fa4831952 /lib/pleroma/chat/message_reference.ex
parent2cdaac433035d8df3890eae098b55380b9e1c9fc (diff)
downloadpleroma-801e668a97adff4a33451dd7bb48799562ed8796.tar.gz
ChatController: Add `last_read_id` option to mark_as_read.
Diffstat (limited to 'lib/pleroma/chat/message_reference.ex')
-rw-r--r--lib/pleroma/chat/message_reference.ex20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/pleroma/chat/message_reference.ex b/lib/pleroma/chat/message_reference.ex
index 7ee7508ca..131ae0186 100644
--- a/lib/pleroma/chat/message_reference.ex
+++ b/lib/pleroma/chat/message_reference.ex
@@ -98,12 +98,20 @@ defmodule Pleroma.Chat.MessageReference do
|> Repo.update()
end
- def set_all_seen_for_chat(chat) do
- chat
- |> for_chat_query()
- |> exclude(:order_by)
- |> exclude(:preload)
- |> where([cmr], cmr.unread == true)
+ def set_all_seen_for_chat(chat, last_read_id \\ nil) do
+ query =
+ chat
+ |> for_chat_query()
+ |> exclude(:order_by)
+ |> exclude(:preload)
+ |> where([cmr], cmr.unread == true)
+
+ if last_read_id do
+ query
+ |> where([cmr], cmr.id <= ^last_read_id)
+ else
+ query
+ end
|> Repo.update_all(set: [unread: false])
end
end