diff options
| author | lain <lain@soykaf.club> | 2019-09-12 18:48:25 +0200 | 
|---|---|---|
| committer | lain <lain@soykaf.club> | 2019-09-12 18:48:25 +0200 | 
| commit | 05e9776517498370ab8f7b7afa0408f6ee979844 (patch) | |
| tree | 96b22ac03344ca960c9e8998749693a9d99b4c7d /lib | |
| parent | 99ea990a16a417cd316b3464ef380746171ecb55 (diff) | |
| download | pleroma-05e9776517498370ab8f7b7afa0408f6ee979844.tar.gz pleroma-05e9776517498370ab8f7b7afa0408f6ee979844.zip  | |
PleromaAPIController: Add endpoint to fetch emoji reactions.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/pleroma_api/pleroma_api_controller.ex | 28 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 6 | 
2 files changed, 34 insertions, 0 deletions
diff --git a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex index 740ea4747..bb090d37f 100644 --- a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex @@ -8,12 +8,40 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 7]    alias Pleroma.Activity +  alias Pleroma.Object +  alias Pleroma.User    alias Pleroma.Conversation.Participation    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.MastodonAPI.AccountView    alias Pleroma.Web.MastodonAPI.ConversationView    alias Pleroma.Web.MastodonAPI.StatusView +  def emoji_reactions_by(%{assigns: %{user: user}} = conn, %{"id" => activity_id}) do +    with %Activity{} = activity <- Activity.get_by_id_with_object(activity_id), +         %Object{data: %{"reactions" => emoji_reactions}} <- Object.normalize(activity) do +      reactions = +        Enum.reduce(emoji_reactions, %{}, fn {emoji, users}, res -> +          users = +            users +            |> Enum.map(&User.get_cached_by_ap_id/1) + +          res +          |> Map.put( +            emoji, +            AccountView.render("accounts.json", %{users: users, for: user, as: :user}) +          ) +        end) + +      conn +      |> json(reactions) +    else +      _e -> +        conn +        |> json(%{}) +    end +  end +    def react_with_emoji(%{assigns: %{user: user}} = conn, %{"id" => activity_id, "emoji" => emoji}) do      with {:ok, _activity, _object} <- CommonAPI.react_with_emoji(activity_id, user, emoji),           activity = Activity.get_by_id(activity_id) do diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 6cca54211..ec6179420 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -266,6 +266,12 @@ defmodule Pleroma.Web.Router do    end    scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do +    pipe_through(:api) + +    get("/statuses/:id/emoji_reactions_by", PleromaAPIController, :emoji_reactions_by) +  end + +  scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do      pipe_through(:authenticated_api)      scope [] do  | 
