diff --git a/frontend/src/ts/pages/friends.ts b/frontend/src/ts/pages/friends.ts index 1a248e6b5..c430c2399 100644 --- a/frontend/src/ts/pages/friends.ts +++ b/frontend/src/ts/pages/friends.ts @@ -92,14 +92,28 @@ const addFriendModal = new SimpleModal({ execFn: async (_thisPopup, receiverName) => { const result = await addFriend(receiverName); - if (result !== true) { - return { - status: -1, - message: result, - }; - } else { + if (result === true) { return { status: 1, message: `Request send to ${receiverName}` }; } + + let status: -1 | 0 | 1 = -1; + let message: string = "Unknown error"; + + if (result.includes("already exists")) { + status = 0; + message = `You are already friends with ${receiverName}`; + } else if (result.includes("request already sent")) { + status = 0; + message = `You have already sent a friend request to ${receiverName}`; + } else if (result.includes("blocked by initiator")) { + status = 0; + message = `You have blocked ${receiverName}`; + } else if (result.includes("blocked by receiver")) { + status = 0; + message = `${receiverName} has blocked you`; + } + + return { status, message, alwaysHide: true }; }, }); diff --git a/frontend/src/ts/utils/simple-modal.ts b/frontend/src/ts/utils/simple-modal.ts index 2bc890d9d..f5b62be04 100644 --- a/frontend/src/ts/utils/simple-modal.ts +++ b/frontend/src/ts/utils/simple-modal.ts @@ -86,6 +86,7 @@ export type ExecReturn = { notificationOptions?: Notifications.AddNotificationOptions; hideOptions?: HideOptions; afterHide?: () => void; + alwaysHide?: boolean; }; type FormInput = CommonInputType & { @@ -373,7 +374,7 @@ export class SimpleModal { if (res.showNotification ?? true) { Notifications.add(res.message, res.status, res.notificationOptions); } - if (res.status === 1) { + if (res.status === 1 || res.alwaysHide) { void this.hide(true, res.hideOptions).then(() => { if (res.afterHide) { res.afterHide();