- if Pleroma.Config.get([:instance, :static_fe], false) do
- Pleroma.Web.StaticFE.StaticFEController.show(conn, %{"notice_id" => id})
- else
- with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)},
- {_, true} <- {:public?, Visibility.is_public?(activity)},
- %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do
- cond do
- format == "html" && activity.data["type"] == "Create" ->
- %Object{} = object = Object.normalize(activity)
-
- RedirectController.redirector_with_meta(
- conn,
- %{
- activity_id: activity.id,
- object: object,
- url: Router.Helpers.o_status_url(Endpoint, :notice, activity.id),
- user: user
- }
- )
-
- format == "html" ->
- RedirectController.redirector(conn, nil)
-
- true ->
- represent_activity(conn, format, activity, user)
- end
- else
- reason when reason in [{:public?, false}, {:activity, nil}] ->
- conn
- |> put_status(404)
- |> RedirectController.redirector(nil, 404)
-
- e ->
- e
+ with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)},
+ {_, true} <- {:public?, Visibility.is_public?(activity)},
+ %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do
+ cond do
+ format in ["json", "activity+json"] ->
+ if activity.local do
+ %{data: %{"id" => redirect_url}} = Object.normalize(activity)
+ redirect(conn, external: redirect_url)
+ else
+ {:error, :not_found}
+ end
+
+ activity.data["type"] == "Create" ->
+ %Object{} = object = Object.normalize(activity)
+
+ RedirectController.redirector_with_meta(
+ conn,
+ %{
+ activity_id: activity.id,
+ object: object,
+ url: Router.Helpers.o_status_url(Endpoint, :notice, activity.id),
+ user: user
+ }
+ )
+
+ true ->
+ RedirectController.redirector(conn, nil)