diff --git a/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-folder-share-mutation.ts b/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-folder-share-mutation.ts index 757f333d31..6545e44f3a 100644 --- a/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-folder-share-mutation.ts +++ b/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-folder-share-mutation.ts @@ -22,8 +22,10 @@ export const useDashboardFolderShareMutation = (options: UseDashboardFolderShare const { publicFolderAPI } = usePublicFolderApi(); const { publicDashboardAPI } = usePublicDashboardApi(); const queryClient = useQueryClient(); - const { withSuffix: publicFolderGetQueryKey } = useServiceQueryKey('dashboard', 'public-folder', 'get'); - const { withSuffix: publicDashboardGetQueryKey } = useServiceQueryKey('dashboard', 'public-dashboard', 'get'); + const { withSuffix: publicFolderGetQueryKeyWithSuffix } = useServiceQueryKey('dashboard', 'public-folder', 'get'); + const { withSuffix: publicDashboardGetQueryKeyWithSuffix } = useServiceQueryKey('dashboard', 'public-dashboard', 'get'); + const { key: publicFolderListQueryKey } = useServiceQueryKey('dashboard', 'public-folder', 'list'); + const { key: publicDashboardListQueryKey } = useServiceQueryKey('dashboard', 'public-dashboard', 'list'); const { isShared, onSuccess, onError, onSettled, } = options; @@ -54,16 +56,18 @@ export const useDashboardFolderShareMutation = (options: UseDashboardFolderShare mutationFn: shareFolderFn, onSuccess: async (data, variables) => { const _folderId = variables.folder_id; - queryClient.invalidateQueries({ queryKey: publicFolderGetQueryKey(_folderId) }); + queryClient.invalidateQueries({ queryKey: publicFolderGetQueryKeyWithSuffix(_folderId) }); if (!isShared.value) { const _dashboardList = await listPublicDashboard(_folderId); const _dashboardIds = _dashboardList.results?.map((dashboard) => dashboard.dashboard_id); if (_dashboardIds) { await Promise.all( - _dashboardIds.map((dashboardId) => queryClient.invalidateQueries({ queryKey: publicDashboardGetQueryKey(dashboardId) })), + _dashboardIds.map((dashboardId) => queryClient.invalidateQueries({ queryKey: publicDashboardGetQueryKeyWithSuffix(dashboardId) })), ); } } + queryClient.invalidateQueries({ queryKey: publicFolderListQueryKey }); + queryClient.invalidateQueries({ queryKey: publicDashboardListQueryKey }); if (onSuccess) await onSuccess(data, variables); }, onError: (error, variables) => { diff --git a/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-share-mutation.ts b/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-share-mutation.ts index 4a7a16305f..d388e74bc6 100644 --- a/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-share-mutation.ts +++ b/apps/web/src/services/_shared/dashboard/core/composables/mutations/use-dashboard-share-mutation.ts @@ -21,6 +21,7 @@ export const useDashboardShareMutation = (options: UseDashboardShareMutationOpti const { publicDashboardAPI } = usePublicDashboardApi(); const queryClient = useQueryClient(); const { withSuffix: publicDashboardGetQueryKey } = useServiceQueryKey('dashboard', 'public-dashboard', 'get'); + const { key: publicDashboardListQueryKey } = useServiceQueryKey('dashboard', 'public-dashboard', 'list'); const { isShared, onSuccess, onError, onSettled, @@ -37,6 +38,7 @@ export const useDashboardShareMutation = (options: UseDashboardShareMutationOpti onSuccess: async (data, variables) => { const _dashboardId = variables.dashboard_id; queryClient.invalidateQueries({ queryKey: publicDashboardGetQueryKey(_dashboardId) }); + queryClient.invalidateQueries({ queryKey: publicDashboardListQueryKey }); if (onSuccess) await onSuccess(data, variables); }, onError: (error, variables) => { diff --git a/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue index 5f0d75d962..ede3a53582 100644 --- a/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue @@ -65,7 +65,12 @@ const state = reactive({ } return i18n.t('DASHBOARDS.DETAIL.SHARED_TO_WORKSPACES'); } - return i18n.t('DASHBOARDS.DETAIL.SHARED_BY_ADMIN'); + if (dashboard.value?.resource_group === RESOURCE_GROUP.DOMAIN) { + return i18n.t('DASHBOARDS.DETAIL.SHARED_BY_ADMIN'); + } + if (dashboard.value?.scope === 'PROJECT') { + return i18n.t('DASHBOARDS.DETAIL.SHARED_TO_ALL_PROJECTS'); + } } if (entryPoint.value === 'PROJECT') { if (dashboard.value?.resource_group === RESOURCE_GROUP.DOMAIN) return i18n.t('DASHBOARDS.DETAIL.SHARED_BY_ADMIN'); diff --git a/apps/web/src/services/dashboards/components/dashboard-main/DashboardBundleShareModal.vue b/apps/web/src/services/dashboards/components/dashboard-main/DashboardBundleShareModal.vue index 9cf08c58fa..cdab60ffe6 100644 --- a/apps/web/src/services/dashboards/components/dashboard-main/DashboardBundleShareModal.vue +++ b/apps/web/src/services/dashboards/components/dashboard-main/DashboardBundleShareModal.vue @@ -2,8 +2,6 @@ import { computed, reactive, watch } from 'vue'; import type { TranslateResult } from 'vue-i18n'; -import { useQueryClient } from '@tanstack/vue-query'; - import { PDataTable, PI, PButtonModal, PRadioGroup, PRadio, PFieldGroup, } from '@cloudforet/mirinae'; @@ -56,14 +54,11 @@ const dashboardTreeControlStore = useDashboardTreeControlStore(); const { publicDashboardList, privateDashboardList, - keys: dashboardKeys, } = useDashboardQuery(); const { publicFolderList, privateFolderList, - keys: folderKeys, } = useDashboardFolderQuery(); -const queryClient = useQueryClient(); const queryState = reactive({ publicDashboardItems: computed(() => { @@ -189,8 +184,6 @@ const unshareDashboard = () => { const { mutate: folderShareMutate, isPending: folderLoading } = useDashboardFolderShareMutation({ isShared: computed(() => state.isShared), onSuccess: () => { - queryClient.invalidateQueries({ queryKey: folderKeys.publicFolderListQueryKey.value }); - queryClient.invalidateQueries({ queryKey: dashboardKeys.privateDashboardListQueryKey.value }); if (state.isShared) showSuccessMessage(i18n.t('DASHBOARDS.DETAIL.ALT_S_SHARE_DASHBOARD'), ''); else showSuccessMessage(i18n.t('DASHBOARDS.DETAIL.ALT_S_UNSHARE_DASHBOARD'), ''); }, @@ -209,7 +202,6 @@ const { mutate: folderShareMutate, isPending: folderLoading } = useDashboardFold const { mutate: dashboardShareMutate, isPending: dashboardLoading } = useDashboardShareMutation({ isShared: computed(() => state.isShared), onSuccess: () => { - queryClient.invalidateQueries({ queryKey: dashboardKeys.publicDashboardListQueryKey.value }); if (state.isShared) showSuccessMessage(i18n.t('DASHBOARDS.DETAIL.ALT_S_SHARE_DASHBOARD'), ''); else showSuccessMessage(i18n.t('DASHBOARDS.DETAIL.ALT_S_UNSHARE_DASHBOARD'), ''); },