feat(permissions): add 1s polling for canCreateVersion to reflect workspace limit changes

This commit is contained in:
Björn Steinhagen
2026-01-29 15:05:18 +02:00
parent 7cd3e8c1dc
commit ff045d5701
2 changed files with 18 additions and 2 deletions
+9 -1
View File
@@ -135,6 +135,8 @@ import {
canCreateVersionQuery,
setVersionMessageMutation
} from '~/lib/graphql/mutationsAndQueries'
import { useIntervalFn } from '@vueuse/core'
const store = useHostAppStore()
const accountStore = useAccountStore()
@@ -157,7 +159,7 @@ app.$baseBinding?.on('documentChanged', () => {
openFilterDialog.value = false
})
const { result: canCreateVersionResult } = useQuery(
const { result: canCreateVersionResult, refetch: refetchCanCreateVersion } = useQuery(
canCreateVersionQuery,
() => ({ projectId: props.modelCard.projectId, modelId: props.modelCard.modelId }),
() => ({
@@ -170,6 +172,12 @@ const canCreateVersion = computed(() => {
return canCreateVersionResult.value?.project.model.permissions.canCreateVersion
})
// poll canCreateVersion every 1s to reflect workspace limit changes.
// No subscription available on a workspace level, so polling probably easiest approach?
useIntervalFn(() => {
refetchCanCreateVersion()
}, 1000)
const sendOrCancel = () => {
if (!props.canEdit) {
return
+9 -1
View File
@@ -79,6 +79,7 @@ import type { CardSetting } from '~/lib/models/card/setting'
import { useAddByUrl } from '~/lib/core/composables/addByUrl'
import { useQuery } from '@vue/apollo-composable'
import { canCreateVersionQuery } from '~/lib/graphql/mutationsAndQueries'
import { useIntervalFn } from '@vueuse/core'
const { trackEvent } = useMixpanel()
const { trackSettingsChange } = useSettingsTracking()
@@ -152,7 +153,7 @@ watch(step, (newVal, oldVal) => {
const hostAppStore = useHostAppStore()
// check canCreateVersion permission when model is selected
const { result: canCreateVersionResult } = useQuery(
const { result: canCreateVersionResult, refetch: refetchCanCreateVersion } = useQuery(
canCreateVersionQuery,
() => ({
projectId: selectedProject.value?.id as string,
@@ -169,6 +170,13 @@ const canCreateVersion = computed(() => {
return canCreateVersionResult.value?.project.model.permissions.canCreateVersion
})
useIntervalFn(() => {
// poll on step 3 (where the "Publish" button is visible)
if (step.value === 3) {
refetchCanCreateVersion()
}
}, 1000)
// accountId, serverUrl, projectId, modelId, sendFilter, settings
const addModel = async () => {
void trackEvent('DUI3 Action', {