+
@@ -41,43 +41,31 @@ import InstanceStatusPolling from '@/components/InstanceStatusPolling.vue'
import DashboardView from '@/components/dashboard/index.vue'
import DashboardDrawer from '@/components/drawers/dashboard/DashboardDrawer.vue'
import DrawerTrigger from '@/components/immersive-editor/DrawerTrigger.vue'
-import { useTeamDashboards } from '@/composables/TeamDashboards'
+import { useDashboardScope, useDashboards } from '@/composables/Dashboards'
import InstanceStatusBadge from '@/pages/instance/components/InstanceStatusBadge.vue'
-import { useAccountStore } from '@/stores/account.js'
import { useContextStore } from '@/stores/context.js'
import { useUxDrawersStore } from '@/stores/ux-drawers.js'
-defineOptions({ name: 'TeamDashboardViewer' })
+defineOptions({ name: 'DashboardViewer' })
const route = useRoute()
const router = useRouter()
const contextStore = useContextStore()
const drawersStore = useUxDrawersStore()
-const { instances, instancesMap, loading, statusChannelLive, fetchData, instanceUpdated } = useTeamDashboards()
+const { context, fetch, viewerRouteName, homeRoute, ensureContext } = useDashboardScope(route.meta.scope as string)
+const { instances, instancesMap, loading, statusChannelLive, fetchData, instanceUpdated } = useDashboards(fetch)
const selectedId = ref
(null)
const isResizing = ref(false)
-const team = computed(() => contextStore.team)
const drawerOpen = computed(() => drawersStore.editorImmersiveDrawer.state)
const selectedInstance = computed(() => instancesMap.value.get(selectedId.value) || null)
-const homeRoute = computed(() => {
- if (!team.value) return null
- return { name: 'team-dashboards', params: { team_slug: team.value.slug } }
-})
-
-function ensureTeam () {
- const slug = route.params.team_slug
- if (slug && contextStore.team?.slug !== slug) {
- useAccountStore().setTeam(slug)
- }
-}
function selectDashboard (id) {
selectedId.value = id
if (route.params.instanceId !== id) {
- router.replace({ name: 'team-dashboards-view', params: { ...route.params, instanceId: id } })
+ router.replace({ name: viewerRouteName, params: { ...route.params, instanceId: id } })
}
}
@@ -99,7 +87,8 @@ function resolveSelection () {
}
watch(instances, resolveSelection)
-watch(() => route.params.team_slug, ensureTeam)
+watch(context, fetchData)
+watch(() => route.params, ensureContext, { deep: true })
watch(() => route.params.instanceId as string, id => {
if (id && instancesMap.value.has(id)) {
selectedId.value = id
@@ -107,7 +96,7 @@ watch(() => route.params.instanceId as string, id => {
})
onMounted(() => {
- ensureTeam()
+ ensureContext()
contextStore.setIsImmersive(true)
fetchData()
})
@@ -118,7 +107,7 @@ onUnmounted(() => {