diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 16 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api_controller.ex | 7 | 
6 files changed, 17 insertions, 13 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 08e21069c..267427a23 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -199,7 +199,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do           :ok <- maybe_federate(unannounce_activity),           {:ok, _activity} <- Repo.delete(announce_activity),           {:ok, object} <- remove_announce_from_object(announce_activity, object) do -      {:ok, unannounce_activity, announce_activity, object} +      {:ok, unannounce_activity, object}      else        _e -> {:ok, object}      end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index e7a3420d2..f04f3c3c0 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -312,7 +312,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      with %User{} = actor <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <-             get_obj_helper(object_id) || ActivityPub.fetch_object_from_id(object_id), -         {:ok, activity, _, _} <- ActivityPub.unannounce(actor, object, id, false) do +         {:ok, activity, _} <- ActivityPub.unannounce(actor, object, id, false) do        {:ok, activity}      else        _e -> :error diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 922b83ed0..8a8d1e050 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -360,7 +360,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do    end    def unreblog_status(%{assigns: %{user: user}} = conn, %{"id" => ap_id_or_id}) do -    with {:ok, _, _, %{data: %{"id" => id}}} <- CommonAPI.unrepeat(ap_id_or_id, user), +    with {:ok, _unannounce, %{data: %{"id" => id}}} <- CommonAPI.unrepeat(ap_id_or_id, user),           %Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id) do        render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity})      end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 0e6369147..1c1c26c56 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -244,6 +244,7 @@ defmodule Pleroma.Web.Router do      post("/statuses/update", TwitterAPI.Controller, :status_update)      post("/statuses/retweet/:id", TwitterAPI.Controller, :retweet) +    post("/statuses/unretweet/:id", TwitterAPI.Controller, :unretweet)      post("/statuses/destroy/:id", TwitterAPI.Controller, :delete_post)      get("/pleroma/friend_requests", TwitterAPI.Controller, :friend_requests) diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index ccc6fe8e7..c23b3c2c4 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -12,14 +12,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do    end    def delete(%User{} = user, id) do -    # TwitterAPI does not have an "unretweet" endpoint; instead this is done -    # via the "destroy" endpoint.  Therefore, we need to handle -    # when the status to "delete" is actually an Announce (repeat) object. -    with %Activity{data: %{"type" => type}} <- Repo.get(Activity, id) do -      case type do -        "Announce" -> unrepeat(user, id) -        _ -> CommonAPI.delete(id, user) -      end +    with %Activity{data: %{"type" => type}} <- Repo.get(Activity, id), +         {:ok, activity} <- CommonAPI.delete(id, user) do +      {:ok, activity}      end    end @@ -70,8 +65,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do      end    end -  defp unrepeat(%User{} = user, ap_id_or_id) do -    with {:ok, _unannounce, activity, _object} <- CommonAPI.unrepeat(ap_id_or_id, user) do +  def unrepeat(%User{} = user, ap_id_or_id) do +    with {:ok, _unannounce, %{data: %{"id" => id}}} <- CommonAPI.unrepeat(ap_id_or_id, user), +         %Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id) do        {:ok, activity}      end    end diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index b29687df5..ff5921807 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -241,6 +241,13 @@ defmodule Pleroma.Web.TwitterAPI.Controller do      end    end +  def unretweet(%{assigns: %{user: user}} = conn, %{"id" => id}) do +    with {_, {:ok, id}} <- {:param_cast, Ecto.Type.cast(:integer, id)}, +         {:ok, activity} <- TwitterAPI.unrepeat(user, id) do +      render(conn, ActivityView, "activity.json", %{activity: activity, for: user}) +    end +  end +    def register(conn, params) do      with {:ok, user} <- TwitterAPI.register_user(params) do        render(conn, UserView, "show.json", %{user: user})  | 
