X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Factivity_pub.ex;h=8e55df0d8cac2fc955b2394e197be133167ffe89;hb=a079ec3a3cdfd42d2cbd51c7698c2c87828e5778;hp=8233bcbf8f36edb05bf6be51ac5079a6241e4df4;hpb=4a94c9a31ef11f63ea71ad9c1f085c18cf8ef083;p=akkoma diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 8233bcbf8..8e55df0d8 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -739,9 +739,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do |> fetch_activities(params, :offset) end - defp user_activities_recipients(%{godmode: true}), do: [] + def user_activities_recipients(%{godmode: true}), do: [] - defp user_activities_recipients(%{reading_user: reading_user}) do + def user_activities_recipients(%{reading_user: reading_user}) do if not is_nil(reading_user) and reading_user.local do [ Constants.as_public(), @@ -946,13 +946,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end defp restrict_recipients_or_hashtags(query, recipients, _user, hashtag_ids) do - from( - [activity, object] in query, - join: hto in "hashtags_objects", + from([activity, object] in query) + |> join(:left, [activity, object], hto in "hashtags_objects", on: hto.object_id == object.id, - where: - (hto.hashtag_id in ^hashtag_ids and ^Constants.as_public() in activity.recipients) or - fragment("? && ?", ^recipients, activity.recipients) + as: :hto + ) + |> where( + [activity, object, hto: hto], + (hto.hashtag_id in ^hashtag_ids and ^Constants.as_public() in activity.recipients) or + fragment("? && ?", ^recipients, activity.recipients) ) end @@ -1529,6 +1531,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp normalize_image(urls) when is_list(urls), do: urls |> List.first() |> normalize_image() defp normalize_image(_), do: nil + defp normalize_also_known_as(aka) when is_list(aka), do: aka + defp normalize_also_known_as(aka) when is_binary(aka), do: [aka] + defp normalize_also_known_as(nil), do: [] + defp object_to_user_data(data, additional) do fields = data @@ -1574,6 +1580,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do also_known_as = data |> Map.get("alsoKnownAs", []) + |> normalize_also_known_as() |> Enum.filter(fn url -> case URI.parse(url) do %URI{scheme: "http"} -> true @@ -1709,7 +1716,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do {:ok, maybe_update_follow_information(data)} else # If this has been deleted, only log a debug and not an error - {:error, "Object has been deleted" = e} -> + {:error, {"Object has been deleted", _, _} = e} -> Logger.debug("Could not decode user at fetch #{ap_id}, #{inspect(e)}") {:error, e}