Use user timezone in emails
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -13,7 +13,7 @@ defmodule Mobilizon.Web.Email.Event do
|
||||
alias Mobilizon.Events
|
||||
alias Mobilizon.Events.{Event, Participant}
|
||||
alias Mobilizon.Storage.Repo
|
||||
alias Mobilizon.Users.User
|
||||
alias Mobilizon.Users.{Setting, User}
|
||||
|
||||
alias Mobilizon.Web.Email
|
||||
alias Mobilizon.Web.Gettext, as: GettextBackend
|
||||
@@ -28,6 +28,7 @@ defmodule Mobilizon.Web.Email.Event do
|
||||
%Event{} = old_event,
|
||||
%Event{} = event,
|
||||
changes,
|
||||
timezone \\ "Etc/UTC",
|
||||
locale \\ "en"
|
||||
) do
|
||||
GettextBackend.put_locale(locale)
|
||||
@@ -44,6 +45,7 @@ defmodule Mobilizon.Web.Email.Event do
|
||||
|> assign(:old_event, old_event)
|
||||
|> assign(:changes, changes)
|
||||
|> assign(:subject, subject)
|
||||
|> assign(:timezone, timezone)
|
||||
|> render(:event_updated)
|
||||
end
|
||||
|
||||
@@ -75,18 +77,42 @@ defmodule Mobilizon.Web.Email.Event do
|
||||
|
||||
defp send_notification_for_event_update_to_participant(
|
||||
{%Participant{} = _participant, %Actor{} = actor,
|
||||
%User{locale: locale, email: email} = _user},
|
||||
%User{locale: locale, email: email} = _user, %Setting{timezone: timezone}},
|
||||
%Event{} = old_event,
|
||||
%Event{} = event,
|
||||
diff
|
||||
) do
|
||||
email
|
||||
|> Email.Event.event_updated(actor, old_event, event, diff, locale)
|
||||
|> Email.Mailer.deliver_later()
|
||||
do_send_notification_for_event_update_to_participant(
|
||||
email,
|
||||
actor,
|
||||
old_event,
|
||||
event,
|
||||
diff,
|
||||
timezone,
|
||||
locale
|
||||
)
|
||||
end
|
||||
|
||||
defp send_notification_for_event_update_to_participant(
|
||||
{%Participant{metadata: %{email: email}} = _participant, %Actor{} = actor, nil},
|
||||
{%Participant{} = _participant, %Actor{} = actor,
|
||||
%User{locale: locale, email: email} = _user, nil},
|
||||
%Event{} = old_event,
|
||||
%Event{} = event,
|
||||
diff
|
||||
) do
|
||||
do_send_notification_for_event_update_to_participant(
|
||||
email,
|
||||
actor,
|
||||
old_event,
|
||||
event,
|
||||
diff,
|
||||
"Etc/UTC",
|
||||
locale
|
||||
)
|
||||
end
|
||||
|
||||
defp send_notification_for_event_update_to_participant(
|
||||
{%Participant{metadata: %{email: email}} = _participant, %Actor{} = actor, nil, nil},
|
||||
%Event{} = old_event,
|
||||
%Event{} = event,
|
||||
diff
|
||||
@@ -94,8 +120,28 @@ defmodule Mobilizon.Web.Email.Event do
|
||||
when not is_nil(email) do
|
||||
locale = Gettext.get_locale()
|
||||
|
||||
do_send_notification_for_event_update_to_participant(
|
||||
email,
|
||||
actor,
|
||||
old_event,
|
||||
event,
|
||||
diff,
|
||||
"Etc/UTC",
|
||||
locale
|
||||
)
|
||||
end
|
||||
|
||||
defp do_send_notification_for_event_update_to_participant(
|
||||
email,
|
||||
actor,
|
||||
old_event,
|
||||
event,
|
||||
diff,
|
||||
timezone,
|
||||
locale
|
||||
) do
|
||||
email
|
||||
|> Email.Event.event_updated(actor, old_event, event, diff, locale)
|
||||
|> Email.Event.event_updated(actor, old_event, event, diff, timezone, locale)
|
||||
|> Email.Mailer.deliver_later()
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user