Add accounts and last_status to conversation read response

This commit is contained in:
Roman Chvanikov 2019-04-21 20:26:13 +07:00
parent 24073f829f
commit 2662bea4e0
2 changed files with 22 additions and 4 deletions

View File

@ -1617,14 +1617,30 @@ def conversation_read(%{assigns: %{user: user}} = conn, %{"id" => participation_
with %Participation{} = participation <-
Repo.get_by(Participation, id: participation_id, user_id: user.id),
{:ok, participation} <- Participation.mark_as_read(participation) do
participation = Repo.preload(participation, conversation: :users)
accounts =
AccountView.render("accounts.json", %{
users: participation.conversation.users,
as: :user
})
last_activity_id =
ActivityPub.fetch_latest_activity_id_for_context(participation.conversation.ap_id, %{
"user" => user,
"blocking_user" => user
})
activity = Activity.get_by_id_with_object(last_activity_id)
last_status = StatusView.render("status.json", %{activity: activity, for: user})
conn
|> json(%{
id: participation.id,
# TODO: Add this.
accounts: [],
accounts: accounts,
unread: !participation.read,
# TODO: Add this.
last_status: nil
last_status: last_status
})
end
end

View File

@ -346,6 +346,8 @@ test "Conversations", %{conn: conn} do
|> post("/api/v1/conversations/#{res_id}/read")
assert response = json_response(res_conn, 200)
assert length(response["accounts"]) == 2
assert response["last_status"]["id"] == direct.id
assert response["unread"] == false
# (vanilla) Mastodon frontend behaviour