Clear notifications when subscription is removed

This commit is contained in:
Liam 2024-07-29 20:03:49 -04:00
parent c30406bcca
commit c7f618d9dd
6 changed files with 18 additions and 3 deletions

View file

@ -12,6 +12,7 @@ defmodule Philomena.Channels do
alias Philomena.Tags
use Philomena.Subscriptions,
on_delete: :clear_channel_notification,
id_name: :channel_id
@doc """

View file

@ -19,6 +19,7 @@ defmodule Philomena.Galleries do
alias Philomena.Images
use Philomena.Subscriptions,
on_delete: :clear_gallery_notification,
id_name: :gallery_id
@doc """

View file

@ -39,6 +39,7 @@ defmodule Philomena.Images do
alias Philomena.Users.User
use Philomena.Subscriptions,
on_delete: :clear_image_notification,
id_name: :image_id
@doc """

View file

@ -25,6 +25,18 @@ defmodule Philomena.Subscriptions do
# For Philomena.Images, this yields :image_id
field_name = Keyword.fetch!(opts, :id_name)
# Deletion callback
on_delete =
case Keyword.get(opts, :on_delete) do
nil ->
[]
callback when is_atom(callback) ->
quote do
apply(__MODULE__, unquote(callback), [object, user])
end
end
# For Philomena.Images, this yields Philomena.Images.Subscription
subscription_module = Module.concat(__CALLER__.module, Subscription)
@ -100,6 +112,8 @@ defmodule Philomena.Subscriptions do
"""
def delete_subscription(object, user) do
unquote(on_delete)
Philomena.Subscriptions.delete_subscription(
unquote(subscription_module),
unquote(field_name),

View file

@ -14,6 +14,7 @@ defmodule Philomena.Topics do
alias Philomena.NotificationWorker
use Philomena.Subscriptions,
on_delete: :clear_topic_notification,
id_name: :topic_id
@doc """

View file

@ -18,6 +18,3 @@
.flex.flex--centered.flex--no-wrap
a.button.button--separate-right title="Delete" href=~p"/forums/#{forum}/topics/#{topic}/read" data-method="post" data-remote="true" data-click-hideparent=".notification"
i.fa.fa-trash
a.button title="Unsubscribe" href=~p"/forums/#{forum}/subscription" data-method="delete" data-remote="true" data-click-hideparent=".notification"
i.fa.fa-bell-slash