Get membership status only for the current group

Closes #575

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-03-05 11:23:17 +01:00
parent 74923c91d8
commit 03824b898c
11 changed files with 161 additions and 67 deletions

View File

@@ -934,7 +934,10 @@ defmodule Mobilizon.Federation.ActivityPub do
do: Refresher.fetch_group(member.parent.url, member.actor)
),
Absinthe.Subscription.publish(Endpoint, member.actor,
group_membership_changed: member.actor.id
group_membership_changed: [
Actor.preferred_username_and_domain(member.parent),
member.actor.id
]
),
member_as_data <- Convertible.model_to_as(member),
audience <-

View File

@@ -126,7 +126,9 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do
}),
{:ok, _} <-
Mobilizon.Service.Activity.Member.insert_activity(member, subject: "member_joined"),
Absinthe.Subscription.publish(Endpoint, actor, group_membership_changed: actor.id),
Absinthe.Subscription.publish(Endpoint, actor,
group_membership_changed: [Actor.preferred_username_and_domain(group), actor.id]
),
join_data <- %{
"type" => "Join",
"id" => member.url,

View File

@@ -5,11 +5,17 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Members do
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Federation.ActivityStream.Convertible
alias Mobilizon.Service.Activity.Member, as: MemberActivity
alias Mobilizon.Web.Endpoint
require Logger
import Mobilizon.Federation.ActivityPub.Utils, only: [make_update_data: 2]
def update(
%Member{parent: %Actor{id: group_id}, id: member_id, role: current_role} = old_member,
%Member{
parent: %Actor{id: group_id} = group,
id: member_id,
role: current_role,
actor: %Actor{id: actor_id} = actor
} = old_member,
%{role: updated_role} = args,
%{moderator: %Actor{url: moderator_url, id: moderator_id} = moderator} = additional
) do
@@ -27,6 +33,9 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Members do
moderator: moderator,
subject: "member_updated"
),
Absinthe.Subscription.publish(Endpoint, actor,
group_membership_changed: [Actor.preferred_username_and_domain(group), actor_id]
),
{:ok, true} <- Cachex.del(:activity_pub, "member_#{member_id}"),
member_as_data <-
Convertible.model_to_as(member),