fix: show user-friendly error message when duplicate invite is sent (#17827)

Fixes #17822

Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
This commit is contained in:
Félix Malfait
2026-02-11 00:06:42 +01:00
committed by GitHub
parent 9c984b137f
commit b4d957306e
2 changed files with 19 additions and 3 deletions
@@ -86,7 +86,11 @@ export const WorkspaceInviteTeam = () => {
const submit = handleSubmit(async ({ emails }) => {
const emailsList = sanitizeEmailList(emails.split(','));
const { data } = await sendInvitation({ emails: emailsList });
if (isDefined(data) && data.sendInvitations.result.length > 0) {
if (!isDefined(data)) {
return;
}
if (data.sendInvitations.result.length > 0) {
const invitationCount = data.sendInvitations.result.length;
enqueueSuccessSnackBar({
message: t`${invitationCount} invitations sent`,
@@ -94,10 +98,13 @@ export const WorkspaceInviteTeam = () => {
duration: 2000,
},
});
return;
}
if (isDefined(data) && !data.sendInvitations.success) {
if (!data.sendInvitations.success) {
enqueueErrorSnackBar({
message: data.sendInvitations.errors.join(', '),
options: {
duration: 5000,
},
@@ -36,6 +36,7 @@ import {
} from 'src/engine/core-modules/workspace-invitation/workspace-invitation.exception';
import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity';
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
import { CustomException } from 'src/utils/custom-exception';
@Injectable()
export class WorkspaceInvitationService {
@@ -357,6 +358,8 @@ export class WorkspaceInvitationService {
value: true,
});
const i18n = this.i18nService.getI18nInstance(sender.locale);
const result = invitationsPr.reduce<{
errors: string[];
result: ReturnType<
@@ -369,7 +372,13 @@ export class WorkspaceInvitationService {
}>(
(acc, invitation) => {
if (invitation.status === 'rejected') {
acc.errors.push(invitation.reason?.message ?? 'Unknown error');
const reason = invitation.reason;
if (reason instanceof CustomException && reason.userFriendlyMessage) {
acc.errors.push(i18n._(reason.userFriendlyMessage));
} else {
acc.errors.push(reason?.message ?? 'Unknown error');
}
} else {
acc.result.push(
invitation.value.isPersonalInvitation