diff options
author | Aaron Tinio <aptinio@gmail.com> | 2019-05-21 00:35:46 +0800 |
---|---|---|
committer | Aaron Tinio <aptinio@gmail.com> | 2019-05-21 00:35:46 +0800 |
commit | eb02edcad9cb0d65fc216408960aec63713e5d2b (patch) | |
tree | bb1e37f12083e3793d750daf3319a6c5a67548c0 /lib/pleroma/activity.ex | |
parent | b30b51c3b792cc2aaf39902809bea84bd9b574a9 (diff) | |
download | pleroma-eb02edcad9cb0d65fc216408960aec63713e5d2b.tar.gz |
Add virtual :thread_muted? field
that may be set when fetching activities
Diffstat (limited to 'lib/pleroma/activity.ex')
-rw-r--r-- | lib/pleroma/activity.ex | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 4e54b15ba..99589590c 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Activity do alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.ThreadMute alias Pleroma.User import Ecto.Changeset @@ -37,6 +38,7 @@ defmodule Pleroma.Activity do field(:local, :boolean, default: true) field(:actor, :string) field(:recipients, {:array, :string}, default: []) + field(:thread_muted?, :boolean, virtual: true) # This is a fake relation, do not use outside of with_preloaded_bookmark/get_bookmark has_one(:bookmark, Bookmark) has_many(:notifications, Notification, on_delete: :delete_all) @@ -90,6 +92,16 @@ defmodule Pleroma.Activity do def with_preloaded_bookmark(query, _), do: query + def with_set_thread_muted_field(query, %User{} = user) do + from([a] in query, + left_join: tm in ThreadMute, + on: tm.user_id == ^user.id and tm.context == fragment("?->>'context'", a.data), + select: %Activity{a | thread_muted?: not is_nil(tm.id)} + ) + end + + def with_set_thread_muted_field(query, _), do: query + def get_by_ap_id(ap_id) do Repo.one( from( |