Merge remote-tracking branch 'origin/develop' into reactions
authorlain <lain@soykaf.club>
Fri, 13 Sep 2019 14:31:27 +0000 (16:31 +0200)
committerlain <lain@soykaf.club>
Fri, 13 Sep 2019 14:31:27 +0000 (16:31 +0200)
1  2 
docs/api/pleroma_api.md
lib/pleroma/web/activity_pub/activity_pub.ex
lib/pleroma/web/activity_pub/transmogrifier.ex
lib/pleroma/web/pleroma_api/pleroma_api_controller.ex
lib/pleroma/web/router.ex
test/web/activity_pub/transmogrifier_test.exs
test/web/pleroma_api/pleroma_api_controller_test.exs

Simple merge
index bb090d37f1a726a18b1aacee7835a624b0973b07,f4df3b024e1004ddd77026b42539f505a46c7ef5..110240115478108a10d5d98171cf772cf97935f6
@@@ -7,50 -7,13 +7,52 @@@ defmodule Pleroma.Web.PleromaAPI.Plerom
  
    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 7]
  
 +  alias Pleroma.Activity
 +  alias Pleroma.Object
 +  alias Pleroma.User
    alias Pleroma.Conversation.Participation
+   alias Pleroma.Notification
    alias Pleroma.Web.ActivityPub.ActivityPub
 +  alias Pleroma.Web.CommonAPI
 +  alias Pleroma.Web.MastodonAPI.AccountView
    alias Pleroma.Web.MastodonAPI.ConversationView
+   alias Pleroma.Web.MastodonAPI.NotificationView
    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
 +      conn
 +      |> put_view(StatusView)
 +      |> render("status.json", %{activity: activity, for: user, as: :activity})
 +    end
 +  end
 +
    def conversation(%{assigns: %{user: user}} = conn, %{"id" => participation_id}) do
      with %Participation{} = participation <- Participation.get(participation_id),
           true <- user.id == participation.user_id do
index ec6179420a8f124da9fce9caecf45058765f387d,b0464037e83ab03dadd11ab3839a96b0b4cb12db..6354510cf634c49825fd3f8c2c415c282c307a43
@@@ -283,7 -272,7 +278,8 @@@ defmodule Pleroma.Web.Router d
      scope [] do
        pipe_through(:oauth_write)
        patch("/conversations/:id", PleromaAPIController, :update_conversation)
 +      post("/statuses/:id/react_with_emoji", PleromaAPIController, :react_with_emoji)
+       post("/notifications/read", PleromaAPIController, :read_notification)
      end
    end