Make sure event update notification email gets sent to anonymous
participants Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
parent
9f9f58ce7d
commit
f4b777c3d6
|
@ -1572,8 +1572,11 @@ defmodule Mobilizon.Events do
|
||||||
Participant
|
Participant
|
||||||
|> join(:inner, [p], a in Actor, on: p.actor_id == a.id and is_nil(a.domain))
|
|> join(:inner, [p], a in Actor, on: p.actor_id == a.id and is_nil(a.domain))
|
||||||
|> join(:left, [_p, a], u in User, on: a.user_id == u.id)
|
|> join(:left, [_p, a], u in User, on: a.user_id == u.id)
|
||||||
|> where([p], p.event_id == ^event_id)
|
|> where(
|
||||||
|> select([_p, a, u], {a, u})
|
[p],
|
||||||
|
p.event_id == ^event_id and p.role not in [^:not_approved, ^:not_confirmed, ^:rejected]
|
||||||
|
)
|
||||||
|
|> select([p, a, u], {p, a, u})
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec list_participations_for_user_query(integer()) :: Ecto.Query.t()
|
@spec list_participations_for_user_query(integer()) :: Ecto.Query.t()
|
||||||
|
|
|
@ -11,25 +11,26 @@ defmodule Mobilizon.Web.Email.Event do
|
||||||
|
|
||||||
alias Mobilizon.Actors.Actor
|
alias Mobilizon.Actors.Actor
|
||||||
alias Mobilizon.Events
|
alias Mobilizon.Events
|
||||||
alias Mobilizon.Events.Event
|
alias Mobilizon.Events.{Event, Participant}
|
||||||
alias Mobilizon.Storage.Repo
|
alias Mobilizon.Storage.Repo
|
||||||
alias Mobilizon.Users.User
|
alias Mobilizon.Users.User
|
||||||
|
|
||||||
alias Mobilizon.Web.{Email, Gettext}
|
alias Mobilizon.Web.Email
|
||||||
|
alias Mobilizon.Web.Gettext, as: GettextBackend
|
||||||
|
|
||||||
@important_changes [:title, :begins_on, :ends_on, :status, :physical_address]
|
@important_changes [:title, :begins_on, :ends_on, :status, :physical_address]
|
||||||
|
|
||||||
@spec event_updated(User.t(), Actor.t(), Event.t(), Event.t(), MapSet.t(), String.t()) ::
|
@spec event_updated(String.t(), Actor.t(), Event.t(), Event.t(), MapSet.t(), String.t()) ::
|
||||||
Bamboo.Email.t()
|
Bamboo.Email.t()
|
||||||
def event_updated(
|
def event_updated(
|
||||||
%User{} = user,
|
email,
|
||||||
%Actor{} = actor,
|
%Actor{} = actor,
|
||||||
%Event{} = old_event,
|
%Event{} = old_event,
|
||||||
%Event{} = event,
|
%Event{} = event,
|
||||||
changes,
|
changes,
|
||||||
locale \\ "en"
|
locale \\ "en"
|
||||||
) do
|
) do
|
||||||
Gettext.put_locale(locale)
|
GettextBackend.put_locale(locale)
|
||||||
|
|
||||||
subject =
|
subject =
|
||||||
gettext(
|
gettext(
|
||||||
|
@ -37,7 +38,7 @@ defmodule Mobilizon.Web.Email.Event do
|
||||||
title: old_event.title
|
title: old_event.title
|
||||||
)
|
)
|
||||||
|
|
||||||
Email.base_email(to: {Actor.display_name(actor), user.email}, subject: subject)
|
Email.base_email(to: {Actor.display_name(actor), email}, subject: subject)
|
||||||
|> assign(:locale, locale)
|
|> assign(:locale, locale)
|
||||||
|> assign(:event, event)
|
|> assign(:event, event)
|
||||||
|> assign(:old_event, old_event)
|
|> assign(:old_event, old_event)
|
||||||
|
@ -73,12 +74,27 @@ defmodule Mobilizon.Web.Email.Event do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp send_notification_for_event_update_to_participant(
|
defp send_notification_for_event_update_to_participant(
|
||||||
{%Actor{} = actor, %User{locale: locale} = user},
|
{%Participant{} = _participant, %Actor{} = actor,
|
||||||
|
%User{locale: locale, email: email} = _user},
|
||||||
%Event{} = old_event,
|
%Event{} = old_event,
|
||||||
%Event{} = event,
|
%Event{} = event,
|
||||||
diff
|
diff
|
||||||
) do
|
) do
|
||||||
user
|
email
|
||||||
|
|> Email.Event.event_updated(actor, old_event, event, diff, locale)
|
||||||
|
|> Email.Mailer.deliver_later()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp send_notification_for_event_update_to_participant(
|
||||||
|
{%Participant{metadata: %{email: email}} = _participant, %Actor{} = actor, nil},
|
||||||
|
%Event{} = old_event,
|
||||||
|
%Event{} = event,
|
||||||
|
diff
|
||||||
|
)
|
||||||
|
when not is_nil(email) do
|
||||||
|
locale = Gettext.get_locale()
|
||||||
|
|
||||||
|
email
|
||||||
|> Email.Event.event_updated(actor, old_event, event, diff, locale)
|
|> Email.Event.event_updated(actor, old_event, event, diff, locale)
|
||||||
|> Email.Mailer.deliver_later()
|
|> Email.Mailer.deliver_later()
|
||||||
end
|
end
|
||||||
|
|
|
@ -837,7 +837,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||||
|
|
||||||
assert_delivered_email(
|
assert_delivered_email(
|
||||||
Email.Event.event_updated(
|
Email.Event.event_updated(
|
||||||
user,
|
user.email,
|
||||||
actor,
|
actor,
|
||||||
event,
|
event,
|
||||||
new_event,
|
new_event,
|
||||||
|
@ -847,7 +847,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||||
|
|
||||||
assert_delivered_email(
|
assert_delivered_email(
|
||||||
Email.Event.event_updated(
|
Email.Event.event_updated(
|
||||||
participant_user,
|
participant_user.email,
|
||||||
participant_actor,
|
participant_actor,
|
||||||
event,
|
event,
|
||||||
new_event,
|
new_event,
|
||||||
|
|
Loading…
Reference in a new issue