Merge branch 'docs/ap_c2s' into 'develop'
[akkoma] / lib / pleroma / chat / message_reference.ex
index 4b201db2e5f42012e08600caf6495477d62ce563..131ae01863e2445af29fa7705816bfff25b1151a 100644 (file)
@@ -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