diff options
author | lain <lain@soykaf.club> | 2020-05-20 15:44:37 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-05-20 15:44:37 +0200 |
commit | e42bc5f55732d42bf40ed9129ec737e654a911b8 (patch) | |
tree | 7d9ff56c7c810fa293dd8011001aef5aff43a42a /lib/pleroma/web/common_api/common_api.ex | |
parent | c7cdc553ff9bd7a068274d9b4b71008d9df04723 (diff) | |
download | pleroma-e42bc5f55732d42bf40ed9129ec737e654a911b8.tar.gz |
Announcements: Handle through common pipeline.
Diffstat (limited to 'lib/pleroma/web/common_api/common_api.ex')
-rw-r--r-- | lib/pleroma/web/common_api/common_api.ex | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 447dbe4e6..dbb3d7ade 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -127,18 +127,19 @@ defmodule Pleroma.Web.CommonAPI do end def repeat(id, user, params \\ %{}) do - with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(id) do - object = Object.normalize(activity) - announce_activity = Utils.get_existing_announce(user.ap_id, object) - public = public_announce?(object, params) - - if announce_activity do - {:ok, announce_activity, object} - else - ActivityPub.announce(user, object, nil, true, public) - end + with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(id), + object = %Object{} <- Object.normalize(activity, false), + {_, nil} <- {:existing_announce, Utils.get_existing_announce(user.ap_id, object)}, + public = public_announce?(object, params), + {:ok, announce, _} <- Builder.announce(user, object, public: public), + {:ok, activity, _} <- Pipeline.common_pipeline(announce, local: true) do + {:ok, activity} else - _ -> {:error, :not_found} + {:existing_announce, %Activity{} = announce} -> + {:ok, announce} + + _ -> + {:error, :not_found} end end |