X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fchat%2Fmessage_reference.ex;h=89537d155723d1435056d7e9393f38860046af17;hb=07ea4d73e12c65cf3fd5c194a8eb1f27900ed17f;hp=4b201db2e5f42012e08600caf6495477d62ce563;hpb=ca0e6e702be3714bb40ff0fb48e9c08aaf322fff;p=akkoma
diff --git a/lib/pleroma/chat/message_reference.ex b/lib/pleroma/chat/message_reference.ex
index 4b201db2e..89537d155 100644
--- a/lib/pleroma/chat/message_reference.ex
+++ b/lib/pleroma/chat/message_reference.ex
@@ -1,5 +1,5 @@
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors
+# Copyright © 2017-2021 Pleroma Authors
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Chat.MessageReference do
@@ -21,7 +21,7 @@ defmodule Pleroma.Chat.MessageReference do
schema "chat_message_references" do
belongs_to(:object, Object)
- belongs_to(:chat, Chat)
+ belongs_to(:chat, Chat, type: FlakeId.Ecto.CompatType)
field(:unread, :boolean, default: true)
@@ -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