@@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | |||||
- Admin API: Return link alongside with token on password reset | - Admin API: Return link alongside with token on password reset | ||||
- MRF (Simple Policy): Also use `:accept`/`:reject` on the actors rather than only their activities | - MRF (Simple Policy): Also use `:accept`/`:reject` on the actors rather than only their activities | ||||
- OStatus: Extract RSS functionality | - OStatus: Extract RSS functionality | ||||
- Mastodon API: Add `pleroma.direct_conversation_id` to the status endpoint (`GET /api/v1/statuses/:id`) | |||||
### Fixed | ### Fixed | ||||
- Mastodon API: Fix private and direct statuses not being filtered out from the public timeline for an authenticated user (`GET /api/v1/timelines/public`) | - Mastodon API: Fix private and direct statuses not being filtered out from the public timeline for an authenticated user (`GET /api/v1/timelines/public`) | ||||
@@ -167,7 +167,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do | |||||
def show(%{assigns: %{user: user}} = conn, %{"id" => id}) do | def show(%{assigns: %{user: user}} = conn, %{"id" => id}) do | ||||
with %Activity{} = activity <- Activity.get_by_id_with_object(id), | with %Activity{} = activity <- Activity.get_by_id_with_object(id), | ||||
true <- Visibility.visible_for_user?(activity, user) do | true <- Visibility.visible_for_user?(activity, user) do | ||||
try_render(conn, "show.json", activity: activity, for: user) | |||||
try_render(conn, "show.json", | |||||
activity: activity, | |||||
for: user, | |||||
with_direct_conversation_id: true | |||||
) | |||||
end | end | ||||
end | end | ||||
@@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do | |||||
alias Pleroma.Activity | alias Pleroma.Activity | ||||
alias Pleroma.ActivityExpiration | alias Pleroma.ActivityExpiration | ||||
alias Pleroma.Config | alias Pleroma.Config | ||||
alias Pleroma.Conversation.Participation | |||||
alias Pleroma.Object | alias Pleroma.Object | ||||
alias Pleroma.Repo | alias Pleroma.Repo | ||||
alias Pleroma.ScheduledActivity | alias Pleroma.ScheduledActivity | ||||
@@ -465,6 +466,24 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do | |||||
assert id == to_string(activity.id) | assert id == to_string(activity.id) | ||||
end | end | ||||
test "get a direct status", %{conn: conn} do | |||||
user = insert(:user) | |||||
other_user = insert(:user) | |||||
{:ok, activity} = | |||||
CommonAPI.post(user, %{"status" => "@#{other_user.nickname}", "visibility" => "direct"}) | |||||
conn = | |||||
conn | |||||
|> assign(:user, user) | |||||
|> get("/api/v1/statuses/#{activity.id}") | |||||
[participation] = Participation.for_user(user) | |||||
res = json_response(conn, 200) | |||||
assert res["pleroma"]["direct_conversation_id"] == participation.id | |||||
end | |||||
test "get statuses by IDs", %{conn: conn} do | test "get statuses by IDs", %{conn: conn} do | ||||
%{id: id1} = insert(:note_activity) | %{id: id1} = insert(:note_activity) | ||||
%{id: id2} = insert(:note_activity) | %{id: id2} = insert(:note_activity) | ||||