Fix leaving a group

There's still an issue because the call is made twice, but at least it
works

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2022-10-26 18:45:47 +02:00
parent 688bdccc24
commit 2454fe2aa4
No known key found for this signature in database
GPG key ID: A061B9DDE0CA0773
3 changed files with 25 additions and 10 deletions

View file

@ -137,7 +137,9 @@ const close = () => {
*/
const cancel = (source: string) => {
emit("cancel", source);
props.onCancel?.apply(null, [source]);
if (props?.onCancel) {
props?.onCancel(source);
}
close();
};
</script>

View file

@ -806,15 +806,20 @@ const openLeaveGroupModal = async (): Promise<void> => {
"Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.",
{ groupName: `<b>${displayName(group.value)}</b>` }
),
onConfirm: () => leaveGroup(),
onConfirm: leaveGroup,
confirmText: t("Leave group"),
cancelText: t("Cancel"),
});
};
const {
mutate: leaveGroupMutation,
onError: onLeaveGroupError,
onDone: onLeaveGroupDone,
} = useLeaveGroup();
const leaveGroup = () => {
const { mutate: leaveGroupMutation, onError: onLeaveGroupError } =
useLeaveGroup();
console.debug("called leaveGroup");
const [groupFederatedUsername, currentActorId] = [
usernameWithDomain(group.value),
@ -837,14 +842,18 @@ const leaveGroup = () => {
],
}
);
onLeaveGroupError((error: any) => {
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
notifier?.error(error.graphQLErrors[0].message);
}
});
};
onLeaveGroupError((error: any) => {
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
notifier?.error(error.graphQLErrors[0].message);
}
});
onLeaveGroupDone(() => {
console.debug("done");
});
const { mutate: followGroupMutation, onError: onFollowGroupError } =
useMutation(FOLLOW_GROUP, () => ({
refetchQueries: [

View file

@ -341,6 +341,10 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do
{:group, nil} ->
{:error, dgettext("errors", "Group not found")}
# Actions.Leave.leave can also return nil if the member isn't found. Probably something to fix.
nil ->
{:error, dgettext("errors", "Member not found")}
{:error, :is_not_only_admin} ->
{:error,
dgettext("errors", "You can't leave this group because you are the only administrator")}