diff --git a/src/components/Group/InvitationsList.vue b/src/components/Group/InvitationsList.vue index 4f6c48c5d..e061b89ff 100644 --- a/src/components/Group/InvitationsList.vue +++ b/src/components/Group/InvitationsList.vue @@ -29,28 +29,33 @@ const emit = defineEmits<{ (e: "reject-invitation", member: IMember): void; }>(); -const { - mutate: acceptInvitation, - onDone: onAcceptInvitationDone, - onError: onAcceptInvitationError, -} = useMutation<{ acceptInvitation: IMember }, { id: string }>( - ACCEPT_INVITATION, - { - refetchQueries({ data }) { - const profile = data?.acceptInvitation?.actor as IPerson; - const group = data?.acceptInvitation?.parent as IGroup; - if (profile && group) { - return [ - { - query: PERSON_STATUS_GROUP, - variables: { id: profile.id, group: usernameWithDomain(group) }, - }, - ]; - } - return []; - }, - } -); +const { mutate: acceptInvitation, onError: onAcceptInvitationError } = + useMutation<{ acceptInvitation: IMember }, { id: string }>( + ACCEPT_INVITATION, + { + refetchQueries({ data }) { + if (!data?.acceptInvitation) { + console.error(data); + alert("Error while accepting invitation"); + return []; + } + + emit("accept-invitation", data?.acceptInvitation); + + const profile = data?.acceptInvitation?.actor as IPerson; + const group = data?.acceptInvitation?.parent as IGroup; + if (profile && group) { + return [ + { + query: PERSON_STATUS_GROUP, + variables: { id: profile.id, group: usernameWithDomain(group) }, + }, + ]; + } + return []; + }, + } + ); const notifier = inject("notifier"); @@ -61,49 +66,36 @@ const onError = (error: ErrorResponse) => { } }; -onAcceptInvitationDone((result) => { - if (!result.data?.acceptInvitation) { - console.error(result); - alert("Error while accepting invitation"); - return; - } - emit("accept-invitation", result.data?.acceptInvitation); -}); - onAcceptInvitationError((err) => onError(err as unknown as ErrorResponse)); -const { - mutate: rejectInvitation, - onDone: onRejectInvitationDone, - onError: onRejectInvitationError, -} = useMutation<{ rejectInvitation: IMember }, { id: string }>( - REJECT_INVITATION, - { - refetchQueries({ data }) { - // TODO Refetching the PERSON_STATUS_GROUP query is useless for the Mygroup.vue page - const profile = data?.rejectInvitation?.actor as IPerson; - const group = data?.rejectInvitation?.parent as IGroup; - if (profile && group) { - return [ - { - query: PERSON_STATUS_GROUP, - variables: { id: profile.id, group: usernameWithDomain(group) }, - }, - ]; - } - return []; - }, - } -); +const { mutate: rejectInvitation, onError: onRejectInvitationError } = + useMutation<{ rejectInvitation: IMember }, { id: string }>( + REJECT_INVITATION, + { + refetchQueries({ data }) { + if (!data?.rejectInvitation) { + console.error(data); + alert("Error while rejecting invitation"); + return []; + } -onRejectInvitationDone((result) => { - if (!result.data?.rejectInvitation) { - console.error(result); - alert("Error while rejecting invitation"); - return; - } - emit("reject-invitation", result.data?.rejectInvitation); -}); + emit("reject-invitation", data?.rejectInvitation); + + // TODO Refetching the PERSON_STATUS_GROUP query is useless for the Mygroup.vue page + const profile = data?.rejectInvitation?.actor as IPerson; + const group = data?.rejectInvitation?.parent as IGroup; + if (profile && group) { + return [ + { + query: PERSON_STATUS_GROUP, + variables: { id: profile.id, group: usernameWithDomain(group) }, + }, + ]; + } + return []; + }, + } + ); onRejectInvitationError((err) => onError(err as unknown as ErrorResponse)); diff --git a/src/graphql/actor.ts b/src/graphql/actor.ts index b1fec19f2..13c47ba0f 100644 --- a/src/graphql/actor.ts +++ b/src/graphql/actor.ts @@ -338,6 +338,9 @@ export const PERSON_STATUS_GROUP = gql` elements { id role + actor { + ...ActorFragment + } parent { ...ActorFragment } diff --git a/src/views/Group/GroupView.vue b/src/views/Group/GroupView.vue index 15b54e2e0..c9fc88923 100644 --- a/src/views/Group/GroupView.vue +++ b/src/views/Group/GroupView.vue @@ -327,6 +327,8 @@ isCurrentActorAnInvitedGroupMember && groupMember !== undefined " :invitations="[groupMember]" + @accept-invitation="refetchGroupInformations" + @reject-invitation="refetchGroupInformations" /> ( PERSON_STATUS_GROUP, @@ -755,6 +761,12 @@ watch( } ); +const refetchGroupInformations = () => { + refetchPersonStatusGroup(); + refetchGroupResourcesList(); + refetchGroupDiscussionsList(); +}; + const { mutate: joinGroupMutation, onError: onJoinGroupError } = useMutation(JOIN_GROUP);