From e679da4c34194b366624e31356d534ab73b11d2d Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 8 Jan 2019 15:27:02 +0700 Subject: [PATCH] add `pinned` property to `StatusView` --- lib/pleroma/web/mastodon_api/views/status_view.ex | 5 +++++ test/web/mastodon_api/mastodon_api_controller_test.exs | 10 +++++----- test/web/mastodon_api/status_view_test.exs | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 8e8fa8121..db543ffe5 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -76,6 +76,7 @@ def render( reblogged: false, favourited: false, muted: false, + pinned: pinned?(activity, user), sensitive: false, spoiler_text: "", visibility: "public", @@ -142,6 +143,7 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity} reblogged: present?(repeated), favourited: present?(favorited), muted: false, + pinned: pinned?(activity, user), sensitive: sensitive, spoiler_text: object["summary"] || "", visibility: get_visibility(object), @@ -295,4 +297,7 @@ def build_emojis(emojis) do defp present?(nil), do: false defp present?(false), do: false defp present?(_), do: true + + defp pinned?(%Activity{id: id}, %User{info: %{pinned_activities: pinned_activities}}), + do: id in pinned_activities end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index e7e42dd24..4a8c70b3b 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1489,7 +1489,7 @@ test "returns pinned statuses", %{conn: conn} do id_str = Integer.to_string(activity.id) - assert [%{"id" => ^id_str}] = result + assert [%{"id" => ^id_str, "pinned" => true}] = result end test "pin status", %{conn: conn} do @@ -1499,14 +1499,14 @@ test "pin status", %{conn: conn} do {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!!!"}) id_str = Integer.to_string(activity.id) - assert %{"id" => ^id_str} = + assert %{"id" => ^id_str, "pinned" => true} = conn |> assign(:user, user) |> post("/api/v1/statuses/#{activity.id}/pin") |> Map.get(:resp_body) |> Jason.decode!() - assert [%{"id" => ^id_str}] = + assert [%{"id" => ^id_str, "pinned" => true}] = conn |> assign(:user, user) |> get("/api/v1/accounts/#{user.id}/statuses?pinned=true") @@ -1524,7 +1524,7 @@ test "unpin status", %{conn: conn} do id_str = Integer.to_string(activity.id) user = User.get_by_ap_id(user.ap_id) - assert %{"id" => ^id_str} = + assert %{"id" => ^id_str, "pinned" => false} = conn |> assign(:user, user) |> post("/api/v1/statuses/#{activity.id}/unpin") @@ -1549,7 +1549,7 @@ test "max pinned statuses", %{conn: conn} do id_str_one = Integer.to_string(activity_one.id) - assert %{"id" => ^id_str_one} = + assert %{"id" => ^id_str_one, "pinned" => true} = conn |> assign(:user, user) |> post("/api/v1/statuses/#{id_str_one}/pin") diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index b953ccd76..1076b5002 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -63,6 +63,7 @@ test "a note activity" do reblogged: false, favourited: false, muted: false, + pinned: false, sensitive: false, spoiler_text: note.data["object"]["summary"], visibility: "public",