diff options
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/status_controller.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 8 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/transmogrifier_test.exs | 9 | 
3 files changed, 13 insertions, 6 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index 2655d6b6e..b8a7b2a0a 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -423,7 +423,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do    defp put_application(params, %{assigns: %{token: %Token{user: %User{} = user} = token}} = _conn) do      if user.disclose_client do        %{client_name: client_name, website: website} = Repo.preload(token, :app).app -      Map.put(params, :application, %{name: client_name, website: website}) +      Map.put(params, :application, %{type: "Application", name: client_name, url: website})      else        Map.put(params, :application, nil)      end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index a45650988..792197a4a 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -180,7 +180,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do        media_attachments: reblogged[:media_attachments] || [],        mentions: mentions,        tags: reblogged[:tags] || [], -      application: activity_object.data["application"] || nil, +      application: build_application(activity_object.data["application"]),        language: nil,        emojis: [],        pleroma: %{ @@ -345,7 +345,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do        poll: render(PollView, "show.json", object: object, for: opts[:for]),        mentions: mentions,        tags: build_tags(tags), -      application: object.data["application"] || nil, +      application: build_application(object.data["application"]),        language: nil,        emojis: build_emojis(object.data["emoji"]),        pleroma: %{ @@ -534,4 +534,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do        me: !!(current_user && current_user.ap_id in users)      }    end + +  @spec build_application(map() | nil) :: map() | nil +  defp build_application(%{type: _type, name: name, url: url}), do: %{name: name, website: url} +  defp build_application(_), do: nil  end diff --git a/test/pleroma/web/activity_pub/transmogrifier_test.exs b/test/pleroma/web/activity_pub/transmogrifier_test.exs index 33ccbe2a7..f6a8cbb6f 100644 --- a/test/pleroma/web/activity_pub/transmogrifier_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier_test.exs @@ -205,14 +205,17 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        {:ok, activity} =          CommonAPI.post(user, %{            status: "#2hu :firefox:", -          application: %{name: "TestClient", website: "https://pleroma.social"} +          application: %{type: "Application", name: "TestClient", url: "https://pleroma.social"}          })        # Ensure injected application data made it into the activity        # as we don't have a Token to derive it from, otherwise it will        # be nil and the test will pass -      assert %{"application" => %{name: "TestClient", website: "https://pleroma.social"}} = -               activity.object.data +      assert %{ +               type: "Application", +               name: "TestClient", +               url: "https://pleroma.social" +             } == activity.object.data["application"]        {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)  | 
