From 2a5a410967a3364074042a5215ba62c886d1c51e Mon Sep 17 00:00:00 2001 From: Joel Jacob Stephen <70131076+JoelJacobStephen@users.noreply.github.com> Date: Tue, 13 Feb 2024 12:04:27 +0530 Subject: [PATCH] refactor: updated deletion of users operation to use only one mutation --- .../gql/mutations/RemoveUserByAdmin.graphql | 3 - .../src/pages/users/index.vue | 104 +++++------------- 2 files changed, 29 insertions(+), 78 deletions(-) delete mode 100644 packages/hoppscotch-sh-admin/src/helpers/backend/gql/mutations/RemoveUserByAdmin.graphql diff --git a/packages/hoppscotch-sh-admin/src/helpers/backend/gql/mutations/RemoveUserByAdmin.graphql b/packages/hoppscotch-sh-admin/src/helpers/backend/gql/mutations/RemoveUserByAdmin.graphql deleted file mode 100644 index 2ee09541ff7..00000000000 --- a/packages/hoppscotch-sh-admin/src/helpers/backend/gql/mutations/RemoveUserByAdmin.graphql +++ /dev/null @@ -1,3 +0,0 @@ -mutation RemoveUserByAdmin($uid: ID!) { - removeUserByAdmin(userUID: $uid) -} diff --git a/packages/hoppscotch-sh-admin/src/pages/users/index.vue b/packages/hoppscotch-sh-admin/src/pages/users/index.vue index 70437365d96..c68e2dfc15f 100644 --- a/packages/hoppscotch-sh-admin/src/pages/users/index.vue +++ b/packages/hoppscotch-sh-admin/src/pages/users/index.vue @@ -169,12 +169,6 @@ @hide-modal="showInviteUserModal = false" @send-invite="sendInvite" /> - @@ -217,8 +215,6 @@ import { InviteNewUserDocument, MakeUsersAdminDocument, MetricsDocument, - RemoveUserAsAdminDocument, - RemoveUserByAdminDocument, RemoveUsersByAdminDocument, UserInfoQuery, UsersListQuery, @@ -322,67 +318,6 @@ const sendInvite = async (email: string) => { } }; -// Remove Admin Status from a Current Admin -// const adminToUser = useMutation(RemoveUserAsAdminDocument); -// const confirmAdminToUser = ref(false); -// const adminToUserUID = ref(null); - -// const makeAdminToUser = (id: string) => { -// confirmAdminToUser.value = true; -// adminToUserUID.value = id; -// }; - -// const makeAdminToUserMutation = async (id: string | null) => { -// if (!id) { -// confirmAdminToUser.value = false; -// toast.error(t('state.remove_admin_failure')); -// return; -// } -// const variables = { uid: id }; -// const result = await adminToUser.executeMutation(variables); -// if (result.error) { -// toast.error(t('state.remove_admin_failure')); -// } else { -// toast.success(t('state.remove_admin_success')); -// usersList.value = usersList.value.map((user) => ({ -// ...user, -// isAdmin: user.uid === id ? false : user.isAdmin, -// })); -// } -// confirmAdminToUser.value = false; -// adminToUserUID.value = null; -// }; - -// Delete a single user -// const userDeletion = useMutation(RemoveUserByAdminDocument); -// const confirmDeletion = ref(false); -// const deleteUserUID = ref(null); - -// const deleteUser = (id: string) => { -// confirmDeletion.value = true; -// deleteUserUID.value = id; -// }; - -// const deleteUserMutation = async (id: string | null) => { -// if (!id) { -// confirmDeletion.value = false; -// toast.error(t('state.delete_user_failure')); -// return; -// } -// const variables = { uid: id }; -// const result = await userDeletion.executeMutation(variables); -// if (result.error) { -// if (result.error.message === DELETE_USER_FAILED_ONLY_ONE_ADMIN) { -// toast.error(t('state.delete_user_failed_only_one_admin')); -// } else toast.error(t('state.delete_user_failure')); -// } else { -// toast.success(t('state.delete_user_success')); -// usersList.value = usersList.value.filter((user) => user.uid !== id); -// } -// confirmDeletion.value = false; -// deleteUserUID.value = null; -// }; - // Make Multiple Users Admin const confirmUsersToAdmin = ref(false); const usersToAdminUID = ref(null); @@ -465,21 +400,40 @@ const makeAdminsToUsers = async (id: string | null) => { // Delete Multiple Users const usersDeletion = useMutation(RemoveUsersByAdminDocument); const confirmUsersDeletion = ref(false); +const deleteUserUID = ref(null); + +const deleteUser = (id: string | null) => { + confirmUsersDeletion.value = true; + deleteUserUID.value = id; +}; + +const AreMultipleUsersSelectedForDeletion = computed( + () => deleteUserUID.value === null && selectedRows.value.length > 0 +); -const deleteUsers = async () => { - const userUIDs = selectedRows.value.map((user) => user.uid); +const deleteUsers = async (id: string | null) => { + const userUIDs = id ? [id] : selectedRows.value.map((user) => user.uid); const variables = { userUIDs }; const result = await usersDeletion.executeMutation(variables); if (result.error) { - toast.error(t('state.delete_users_failure')); + if (result.error.message === DELETE_USER_FAILED_ONLY_ONE_ADMIN) { + toast.error(t('state.delete_user_failed_only_one_admin')); + } else { + toast.error( + id ? t('state.delete_user_failure') : t('state.delete_users_failure') + ); + } } else { - toast.success(t('state.delete_user_success')); + toast.success( + id ? t('state.delete_user_success') : t('state.delete_users_success') + ); usersList.value = usersList.value.filter( (user) => !userUIDs.includes(user.uid) ); selectedRows.value.splice(0, selectedRows.value.length); } confirmUsersDeletion.value = false; + deleteUserUID.value = null; };