diff options
| author | lain <lain@soykaf.club> | 2019-07-31 15:12:29 +0200 | 
|---|---|---|
| committer | lain <lain@soykaf.club> | 2019-07-31 15:12:29 +0200 | 
| commit | 7483679a7b6ff63c9c61c3df3e9e37f2c24012ff (patch) | |
| tree | 005c9778b7debe4fc43ff7fe3761fa6a669ff14f /lib | |
| parent | 677df5ceb370a22fa8df44e6ce5f6fa47d91f9b8 (diff) | |
| download | pleroma-7483679a7b6ff63c9c61c3df3e9e37f2c24012ff.tar.gz pleroma-7483679a7b6ff63c9c61c3df3e9e37f2c24012ff.zip | |
StatusView: Return direct conversation id.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/conversation/participation.ex | 8 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 18 | 
2 files changed, 25 insertions, 1 deletions
| diff --git a/lib/pleroma/conversation/participation.ex b/lib/pleroma/conversation/participation.ex index 5883e4183..77b3f61e9 100644 --- a/lib/pleroma/conversation/participation.ex +++ b/lib/pleroma/conversation/participation.ex @@ -65,6 +65,14 @@ defmodule Pleroma.Conversation.Participation do      |> Pleroma.Pagination.fetch_paginated(params)    end +  def for_user_and_conversation(user, conversation) do +    from(p in __MODULE__, +      where: p.user_id == ^user.id, +      where: p.conversation_id == ^conversation.id +    ) +    |> Repo.one() +  end +    def for_user_with_last_activity_id(user, params \\ %{}) do      for_user(user, params)      |> Enum.map(fn participation -> diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 80df9b2ac..a862554b1 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -6,6 +6,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do    use Pleroma.Web, :view    alias Pleroma.Activity +  alias Pleroma.Conversation +  alias Pleroma.Conversation.Participation    alias Pleroma.HTML    alias Pleroma.Object    alias Pleroma.Repo @@ -225,6 +227,19 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do          object.data["url"] || object.data["external_url"] || object.data["id"]        end +    direct_conversation_id = +      with {_, true} <- {:include_id, opts[:with_direct_conversation_id]}, +           {_, %User{} = for_user} <- {:for_user, opts[:for]}, +           %{data: %{"context" => context}} when is_binary(context) <- activity, +           %Conversation{} = conversation <- Conversation.get_for_ap_id(context), +           %Participation{id: participation_id} <- +             Participation.for_user_and_conversation(for_user, conversation) do +        participation_id +      else +        _e -> +          nil +      end +      %{        id: to_string(activity.id),        uri: object.data["id"], @@ -262,7 +277,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do          conversation_id: get_context_id(activity),          in_reply_to_account_acct: reply_to_user && reply_to_user.nickname,          content: %{"text/plain" => content_plaintext}, -        spoiler_text: %{"text/plain" => summary_plaintext} +        spoiler_text: %{"text/plain" => summary_plaintext}, +        direct_conversation_id: direct_conversation_id        }      }    end | 
