commit: 8b4d81609d5627d62b826bcd3e87290cb513495f
parent: 6cc5341d26426f98a53a6e46787f1457f974f321
Author: feld <feld@feld.me>
Date: Sun, 12 Jan 2020 18:37:52 +0000
Merge branch 'updated-at-on-conversation-read' into 'develop'
MastodonAPI: Fix mark-as-read bringing the conversation to the top (`POST /api/v1/conversations/:id/read`)
See merge request pleroma/pleroma!2080
Diffstat:
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
@@ -105,6 +105,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Mastodon API: Inability to get some local users by nickname in `/api/v1/accounts/:id_or_nickname`
- AdminAPI: If some status received reports both in the "new" format and "old" format it was considered reports on two different statuses (in the context of grouped reports)
- Admin API: Error when trying to update reports in the "old" format
+- Mastodon API: Marking a conversation as read (`POST /api/v1/conversations/:id/read`) now no longer brings it to the top in the user's direct conversation list
</details>
## [1.1.6] - 2019-11-19
diff --git a/lib/pleroma/conversation/participation.ex b/lib/pleroma/conversation/participation.ex
@@ -64,11 +64,13 @@ defmodule Pleroma.Conversation.Participation do
end
def mark_as_read(participation) do
- participation
- |> read_cng(%{read: true})
- |> Repo.update()
+ __MODULE__
+ |> where(id: ^participation.id)
+ |> update(set: [read: true])
+ |> select([p], p)
+ |> Repo.update_all([])
|> case do
- {:ok, participation} ->
+ {1, [participation]} ->
participation = Repo.preload(participation, :user)
User.set_unread_conversation_count(participation.user)
{:ok, participation}
diff --git a/test/conversation/participation_test.exs b/test/conversation/participation_test.exs
@@ -125,9 +125,10 @@ defmodule Pleroma.Conversation.ParticipationTest do
test "it marks a participation as read" do
participation = insert(:participation, %{read: false})
- {:ok, participation} = Participation.mark_as_read(participation)
+ {:ok, updated_participation} = Participation.mark_as_read(participation)
- assert participation.read
+ assert updated_participation.read
+ assert updated_participation.updated_at == participation.updated_at
end
test "it marks a participation as unread" do