From 0f9a0ba9cd1d8ef2ecc65690f28206b0577214a4 Mon Sep 17 00:00:00 2001 From: Jeremy Wharton Date: Sun, 9 Jul 2023 21:45:04 -0500 Subject: [PATCH] web/satellite: fix project switch when removing project members This change fixes an issue where the currently selected project would be switched when removing project members. Change-Id: I8138b4229eb7933d25a2fe84e5aa0b5846fc79b8 --- .../modals/RemoveProjectMemberModal.vue | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/web/satellite/src/components/modals/RemoveProjectMemberModal.vue b/web/satellite/src/components/modals/RemoveProjectMemberModal.vue index df803d53d..56a8f4407 100644 --- a/web/satellite/src/components/modals/RemoveProjectMemberModal.vue +++ b/web/satellite/src/components/modals/RemoveProjectMemberModal.vue @@ -32,6 +32,7 @@ border-radius="10px" :on-press="closeModal" :is-transparent="true" + :is-disabled="isLoading" /> @@ -62,6 +64,7 @@ import { useAppStore } from '@/store/modules/appStore'; import { useProjectsStore } from '@/store/modules/projectsStore'; import { useProjectMembersStore } from '@/store/modules/projectMembersStore'; import { useConfigStore } from '@/store/modules/configStore'; +import { useLoading } from '@/composables/useLoading'; import VModal from '@/components/common/VModal.vue'; import VButton from '@/components/common/VButton.vue'; @@ -75,6 +78,7 @@ const projectsStore = useProjectsStore(); const pmStore = useProjectMembersStore(); const notify = useNotify(); const router = useRouter(); +const { isLoading, withLoading } = useLoading(); const analytics: AnalyticsHttpApi = new AnalyticsHttpApi(); @@ -97,7 +101,7 @@ async function setProjectState(): Promise { return; } - if (!projects.includes(projectsStore.state.selectedProject)) { + if (!projects.some(p => p.id === projectsStore.state.selectedProject.id)) { projectsStore.selectProject(projects[0].id); } @@ -105,17 +109,23 @@ async function setProjectState(): Promise { } async function onRemove(): Promise { - try { - await pmStore.deleteProjectMembers(projectsStore.state.selectedProject.id); - await setProjectState(); - } catch (error) { - notify.error(`Error while deleting users from projectMembers. ${error.message}`, AnalyticsErrorEventSource.PROJECT_MEMBERS_HEADER); - return; - } + await withLoading(async () => { + try { + await pmStore.deleteProjectMembers(projectsStore.state.selectedProject.id); + notify.success('Members were successfully removed from the project'); + pmStore.setSearchQuery(''); + } catch (error) { + notify.error(`Error removing project members. ${error.message}`, AnalyticsErrorEventSource.PROJECT_MEMBERS_HEADER); + } - notify.success('Members were successfully removed from project'); - pmStore.setSearchQuery(''); - closeModal(); + try { + await setProjectState(); + } catch (error) { + notify.error(`Unable to fetch project members. ${error.message}`, AnalyticsErrorEventSource.PROJECT_MEMBERS_HEADER); + } + + closeModal(); + }); } /**