diff --git a/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts b/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts index 21f700084..605602cb7 100644 --- a/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts +++ b/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts @@ -3,17 +3,6 @@ import { getI18n } from '~/modules/i18n'; import { UserDeletionResult } from './backend/graphql'; import { ADMIN_CANNOT_BE_DELETED, USER_IS_OWNER } from './errors'; -type IndividualActionMetadata = null; -type BulkActionMetadata = { - areMultipleUsersSelected: boolean; - deletedUserIDs: string[]; -}; -type ActionMetadata = IndividualActionMetadata | BulkActionMetadata; - -type HandleUserDeletion = { - (deletedUsersList: UserDeletionResult[], metadata: ActionMetadata): void; -}; - type ToastMessage = { message: string; state: 'success' | 'error'; @@ -38,21 +27,22 @@ const displayToastMessages = ( }); }; -export const handleUserDeletion: HandleUserDeletion = ( - deletedUsersList, - metadata -) => { +export const handleUserDeletion = (deletedUsersList: UserDeletionResult[]) => { const uniqueErrorMessages = new Set( deletedUsersList.map(({ errorMessage }) => errorMessage).filter(Boolean) ) as Set; const isBulkAction = deletedUsersList.length > 1; + const deletedUserIDs = deletedUsersList + .filter((user) => user.isDeleted) + .map((user) => user.userUID); + // Show the success toast based on the action type if there are no errors if (uniqueErrorMessages.size === 0) { if (isBulkAction) { toast.success( - (metadata as BulkActionMetadata).areMultipleUsersSelected + isBulkAction ? t('state.delete_user_success') : t('state.delete_users_success') ); @@ -78,13 +68,10 @@ export const handleUserDeletion: HandleUserDeletion = ( const toastMessages: ToastMessage[] = []; if (isBulkAction) { - const { areMultipleUsersSelected, deletedUserIDs } = - metadata as BulkActionMetadata; - // Indicates the actual count of users deleted (filtered via the `isDeleted` field) const deletedUsersCount = deletedUserIDs.length; - if (areMultipleUsersSelected && deletedUsersCount > 0) { + if (isBulkAction && deletedUsersCount > 0) { toastMessages.push({ message: t('state.delete_some_users_success', { count: deletedUsersCount, @@ -118,10 +105,9 @@ export const handleUserDeletion: HandleUserDeletion = ( (key) => !((key as string) in errMsgMap) ) ) { - const fallbackErrMsg = - isBulkAction && (metadata as BulkActionMetadata).areMultipleUsersSelected - ? t('state.delete_users_failure') - : t('state.delete_user_failure'); + const fallbackErrMsg = isBulkAction + ? t('state.delete_users_failure') + : t('state.delete_user_failure'); toastMessages.push({ message: fallbackErrMsg, diff --git a/packages/hoppscotch-sh-admin/src/pages/users/_id.vue b/packages/hoppscotch-sh-admin/src/pages/users/_id.vue index 6151b766f..b7e04e1c8 100644 --- a/packages/hoppscotch-sh-admin/src/pages/users/_id.vue +++ b/packages/hoppscotch-sh-admin/src/pages/users/_id.vue @@ -210,7 +210,7 @@ const deleteUserMutation = async (id: string | null) => { } else { const deletedUsers = result.data?.removeUsersByAdmin || []; - handleUserDeletion(deletedUsers, null); + handleUserDeletion(deletedUsers); } confirmDeletion.value = false; deleteUserUID.value = null; diff --git a/packages/hoppscotch-sh-admin/src/pages/users/index.vue b/packages/hoppscotch-sh-admin/src/pages/users/index.vue index 7a49b2e37..ad2079105 100644 --- a/packages/hoppscotch-sh-admin/src/pages/users/index.vue +++ b/packages/hoppscotch-sh-admin/src/pages/users/index.vue @@ -584,10 +584,7 @@ const deleteUsers = async (id: string | null) => { .filter((user) => user.isDeleted) .map((user) => user.userUID); - handleUserDeletion(deletedUsers, { - areMultipleUsersSelected: areMultipleUsersSelected.value, - deletedUserIDs, - }); + handleUserDeletion(deletedUsers); usersList.value = usersList.value.filter( (user) => !deletedUserIDs.includes(user.uid)