forked from AkkomaGang/akkoma
Add notification checks
This commit is contained in:
parent
79910ce5cc
commit
007762e767
5 changed files with 28 additions and 7 deletions
|
@ -148,6 +148,7 @@ def get_notified_from_activity(
|
||||||
[]
|
[]
|
||||||
|> Utils.maybe_notify_to_recipients(activity)
|
|> Utils.maybe_notify_to_recipients(activity)
|
||||||
|> Utils.maybe_notify_mentioned_recipients(activity)
|
|> Utils.maybe_notify_mentioned_recipients(activity)
|
||||||
|
|> Utils.maybe_notify_subscribers(activity)
|
||||||
|> Enum.uniq()
|
|> Enum.uniq()
|
||||||
|
|
||||||
User.get_users_from_set(recipients, local_only)
|
User.get_users_from_set(recipients, local_only)
|
||||||
|
|
|
@ -935,10 +935,10 @@ def subscribe(subscriber, %{ap_id: ap_id}) do
|
||||||
|
|
||||||
def unsubscribe(unsubscriber, %{ap_id: ap_id}) do
|
def unsubscribe(unsubscriber, %{ap_id: ap_id}) do
|
||||||
info_cng =
|
info_cng =
|
||||||
subscriber.info
|
unsubscriber.info
|
||||||
|> User.Info.remove_from_subscriptions(ap_id)
|
|> User.Info.remove_from_subscriptions(ap_id)
|
||||||
|
|
||||||
change(subscriber)
|
change(unsubscriber)
|
||||||
|> put_embed(:info, info_cng)
|
|> put_embed(:info, info_cng)
|
||||||
|> update_and_set_cache()
|
|> update_and_set_cache()
|
||||||
end
|
end
|
||||||
|
@ -1005,6 +1005,9 @@ def muted_users(user),
|
||||||
def blocked_users(user),
|
def blocked_users(user),
|
||||||
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.blocks))
|
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.blocks))
|
||||||
|
|
||||||
|
def subscribed_users(user),
|
||||||
|
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.subscriptions))
|
||||||
|
|
||||||
def block_domain(user, domain) do
|
def block_domain(user, domain) do
|
||||||
info_cng =
|
info_cng =
|
||||||
user.info
|
user.info
|
||||||
|
|
|
@ -22,7 +22,7 @@ defmodule Pleroma.User.Info do
|
||||||
field(:domain_blocks, {:array, :string}, default: [])
|
field(:domain_blocks, {:array, :string}, default: [])
|
||||||
field(:mutes, {:array, :string}, default: [])
|
field(:mutes, {:array, :string}, default: [])
|
||||||
field(:muted_reblogs, {:array, :string}, default: [])
|
field(:muted_reblogs, {:array, :string}, default: [])
|
||||||
field(:subscribed_to, {:array, :string}, default: [])
|
field(:subscriptions, {:array, :string}, default: [])
|
||||||
field(:deactivated, :boolean, default: false)
|
field(:deactivated, :boolean, default: false)
|
||||||
field(:no_rich_text, :boolean, default: false)
|
field(:no_rich_text, :boolean, default: false)
|
||||||
field(:ap_enabled, :boolean, default: false)
|
field(:ap_enabled, :boolean, default: false)
|
||||||
|
@ -98,8 +98,8 @@ def set_subscriptions(info, subscriptions) do
|
||||||
params = %{subscriptions: subscriptions}
|
params = %{subscriptions: subscriptions}
|
||||||
|
|
||||||
info
|
info
|
||||||
|> cast(params, [:subscribed_to])
|
|> cast(params, [:subscriptions])
|
||||||
|> validate_required([:subscribed_to])
|
|> validate_required([:subscriptions])
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_to_mutes(info, muted) do
|
def add_to_mutes(info, muted) do
|
||||||
|
@ -119,11 +119,11 @@ def remove_from_block(info, blocked) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_to_subscriptions(info, subscribed) do
|
def add_to_subscriptions(info, subscribed) do
|
||||||
set_subscriptions(info, Enum.uniq([subscribed | info.subscribed_to]))
|
set_subscriptions(info, Enum.uniq([subscribed | info.subscriptions]))
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_from_subscriptions(info, subscribed) do
|
def remove_from_subscriptions(info, subscribed) do
|
||||||
set_subscriptions(info, List.delete(info.subscribed_to, subscribed))
|
set_subscriptions(info, List.delete(info.subscriptions, subscribed))
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_domain_blocks(info, domain_blocks) do
|
def set_domain_blocks(info, domain_blocks) do
|
||||||
|
|
|
@ -335,6 +335,22 @@ def maybe_notify_mentioned_recipients(
|
||||||
|
|
||||||
def maybe_notify_mentioned_recipients(recipients, _), do: recipients
|
def maybe_notify_mentioned_recipients(recipients, _), do: recipients
|
||||||
|
|
||||||
|
def maybe_notify_subscribers(
|
||||||
|
recipients,
|
||||||
|
%Activity{data: %{"actor" => actor, "type" => type}}
|
||||||
|
) when type == "Create" do
|
||||||
|
with %User{} = user <- User.get_by_ap_id(actor) do
|
||||||
|
subscriber_ids =
|
||||||
|
user
|
||||||
|
|> User.subscribed_users()
|
||||||
|
|> Enum.map(& &1.ap_id)
|
||||||
|
|
||||||
|
recipients ++ subscriber_ids
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def maybe_notify_subscribers(recipients, _), do: recipients
|
||||||
|
|
||||||
def maybe_extract_mentions(%{"tag" => tag}) do
|
def maybe_extract_mentions(%{"tag" => tag}) do
|
||||||
tag
|
tag
|
||||||
|> Enum.filter(fn x -> is_map(x) end)
|
|> Enum.filter(fn x -> is_map(x) end)
|
||||||
|
|
|
@ -62,6 +62,7 @@ def unblock(%User{} = blocker, params) do
|
||||||
def subscribe(%User{} = subscriber, params) do
|
def subscribe(%User{} = subscriber, params) do
|
||||||
with {:ok, %User{} = subscribed} <- get_user(params) do
|
with {:ok, %User{} = subscribed} <- get_user(params) do
|
||||||
User.subscribe(subscriber, subscribed)
|
User.subscribe(subscriber, subscribed)
|
||||||
|
|> IO.inspect
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue