Files
speckle-server/packages/frontend-2/lib/projects/composables/projectPages.ts
T
Kristaps Fabians Geikins f80a7189a0 chore(fe2): upgrade to nuxt 3.8.2 (#1887)
* chore(fe2): upgrade to nuxt 3.8.2

* fix tailwind-theme build

* readme update

* removing storybook from fe2 :(

* fix(fe2): codegen schema url resolution
2023-11-29 10:22:17 +02:00

69 lines
2.4 KiB
TypeScript

import type { MaybeRef } from '@vueuse/core'
import { useModelVersionCardAutomationsStatusUpdateTracking } from '~~/lib/automations/composables/automationsStatus'
import { useSynchronizedCookie } from '~~/lib/common/composables/reactiveCookie'
import { GridListToggleValue } from '~~/lib/layout/helpers/components'
import {
useProjectModelUpdateTracking,
useProjectPendingModelUpdateTracking
} from '~~/lib/projects/composables/modelManagement'
import { useProjectUpdateTracking } from '~~/lib/projects/composables/projectManagement'
import {
useProjectPendingVersionUpdateTracking,
useProjectVersionUpdateTracking
} from '~~/lib/projects/composables/versionManagement'
export function useProjectPageItemViewType(contentType: string) {
const viewTypeCookie = useSynchronizedCookie(`projectPage-${contentType}-viewType`)
const gridOrList = computed({
get: () =>
viewTypeCookie.value === GridListToggleValue.List
? GridListToggleValue.List
: GridListToggleValue.Grid,
set: (newVal) => {
viewTypeCookie.value = newVal
}
})
return gridOrList
}
/**
* Invoke this in any of the project pages/subpages to ensure we track realtime updates
* to the project, its versions and/or models
*/
export function useGeneralProjectPageUpdateTracking(
params: {
projectId: MaybeRef<string>
},
options?: Partial<{
notifyOnProjectUpdate: boolean
redirectHomeOnProjectDeletion: boolean
redirectToProjectOnModelDeletion: (modelId: string) => boolean
}>
) {
const projectId = computed(() => unref(params.projectId))
// Project updates + redirect away if project deleted
useProjectUpdateTracking(projectId, undefined, {
redirectOnDeletion: options?.redirectHomeOnProjectDeletion ?? true,
notifyOnUpdate: options?.notifyOnProjectUpdate
})
// Project model update tracking
useProjectModelUpdateTracking(projectId, undefined, {
redirectToProjectOnModelDeletion: options?.redirectToProjectOnModelDeletion
})
// Project version update tracking (e.g. updating model previews, showing new version toast)
useProjectVersionUpdateTracking(projectId)
// FILE IMPORTS:
// Pending model & version update tracking
useProjectPendingVersionUpdateTracking(projectId)
useProjectPendingModelUpdateTracking(projectId)
// AUTOMATIONS:
// AutomationsStatus update
useModelVersionCardAutomationsStatusUpdateTracking(projectId)
}