Send notification emails to followers and members when a group publishes

a new event

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-11-10 16:36:32 +01:00
parent 800060a926
commit 5c7067b22b
65 changed files with 5491 additions and 2767 deletions

View File

@@ -4,7 +4,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Invite do
"""
alias Mobilizon.Actors
alias Mobilizon.Actors.{Actor, Member}
alias Mobilizon.Web.Email.Group
alias Mobilizon.Web.Email.Member, as: EmailMember
require Logger
import Mobilizon.Federation.ActivityPub.Utils,
@@ -56,7 +56,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Invite do
maybe_federate(activity)
maybe_relay_if_group_activity(activity)
Group.send_invite_to_user(member)
EmailMember.send_invite_to_user(member)
{:ok, activity, member}
end
else

View File

@@ -5,7 +5,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Remove do
alias Mobilizon.Actors
alias Mobilizon.Actors.{Actor, Member}
alias Mobilizon.Federation.ActivityPub.Activity
alias Mobilizon.Web.Email.Group
alias Mobilizon.Web.Email.Member, as: EmailMember
require Logger
import Mobilizon.Federation.ActivityPub.Utils,
@@ -34,7 +34,7 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Remove do
subject: "member_removed"
)
Group.send_notification_to_removed_member(member)
EmailMember.send_notification_to_removed_member(member)
remove_data = %{
"to" => [group_members_url],

View File

@@ -16,6 +16,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Events do
alias Mobilizon.Service.Notifications.Scheduler
alias Mobilizon.Share
alias Mobilizon.Tombstone
alias Mobilizon.Web.Email.Group
import Mobilizon.Federation.ActivityPub.Utils, only: [make_create_data: 2, make_update_data: 2]
require Logger
@@ -30,6 +31,8 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Events do
case EventsManager.create_event(args) do
{:ok, %Event{} = event} ->
EventActivity.insert_activity(event, subject: "event_created")
# TODO make this async
Group.notify_of_new_event(event)
event_as_data = Convertible.model_to_as(event)
audience = Audience.get_audience(event)
create_data = make_create_data(event_as_data, Map.merge(audience, additional))