fix(settings): warn user and force push them to refresh (#43)

This commit is contained in:
Oğuzhan Koral
2025-08-07 11:30:18 +03:00
committed by GitHub
parent 669afe81cf
commit b2695e77f5
3 changed files with 91 additions and 3 deletions
+36 -1
View File
@@ -19,7 +19,7 @@
"
hide-text
class=""
:disabled="!canEdit"
:disabled="!canEdit || isSettingsMissing"
@click.stop="$emit('manual-publish-or-load')"
></FormButton>
</div>
@@ -57,6 +57,16 @@
</button>
</template>
</AutomateResultDialog>
<!-- To test missing settings -->
<!-- <FormButton
v-if="!isSettingsMissing"
v-tippy="'Refresh settings are needed'"
color="subtle"
:icon-left="TrashIcon"
hide-text
size="sm"
@click="deleteSettings"
/> -->
<FormButton
v-if="store.hostAppName !== 'navisworks' && store.hostAppName !== 'etabs'"
v-tippy="'Highlight'"
@@ -338,6 +348,31 @@ const highlightModel = () => {
trackEvent('DUI3 Action', { name: 'Highlight Model' }, props.modelCard.accountId)
}
const isSettingsMissing = computed(() =>
isSender.value ? isSendSettingsMissing.value : isReceiveSettingsMissing.value
)
const isSendSettingsMissing = computed(
() =>
isSender.value &&
store.sendSettings &&
store.sendSettings.length > 0 &&
!props.modelCard.settings
)
const isReceiveSettingsMissing = computed(
() =>
!isSender.value &&
store.receiveSettings &&
store.receiveSettings.length > 0 &&
!props.modelCard.settings
)
// To test missing settings
// const deleteSettings = async () => {
// await store.patchModel(props.modelCard.modelCardId, { settings: undefined })
// }
const viewModel = () => {
// previously with DUI2, it was Stream View but actually it is "Version View" now. Also having conflict with old/new terminology.
trackEvent('DUI3 Action', { name: 'Version View' }, props.modelCard.accountId)
+29 -1
View File
@@ -19,7 +19,7 @@
color="subtle"
class="block text-foreground-2 hover:text-foreground overflow-hidden max-w-full !justify-start"
full-width
:disabled="!!modelCard.progress || !canEdit"
:disabled="!!modelCard.progress || !canEdit || isReceiveSettingsMissing"
@click.stop="openVersionsDialog = true"
>
<span>
@@ -58,6 +58,10 @@
/>
</CommonDialog>
<template #states>
<CommonModelNotification
v-if="isReceiveSettingsMissing"
:notification="receiveSettingsMissingNotification"
/>
<CommonModelNotification
v-if="expiredNotification"
:notification="expiredNotification"
@@ -121,6 +125,30 @@ app.$baseBinding?.on('documentChanged', () => {
openVersionsDialog.value = false
})
const isReceiveSettingsMissing = computed(
() =>
store.receiveSettings &&
store.receiveSettings.length > 0 &&
!props.modelCard.settings
)
const receiveSettingsMissingNotification = computed(() => {
const notification = {} as ModelCardNotification
notification.dismissible = false
notification.level = 'danger'
notification.text = 'Load settings are corrupted for some reason.'
notification.cta = {
name: 'Refresh',
action: async () => {
await store.patchModel(props.modelCard.modelCardId, {
settings: store.receiveSettings
})
}
}
return notification
})
const isExpired = computed(() => {
return props.modelCard.latestVersionId !== props.modelCard.selectedVersionId
})
+26 -1
View File
@@ -13,7 +13,7 @@
size="sm"
color="subtle"
class="block text-foreground-2 hover:text-foreground overflow-hidden max-w-full !justify-start"
:disabled="!!modelCard.progress || !props.canEdit"
:disabled="!!modelCard.progress || !props.canEdit || isSendSettingsMissing"
full-width
@click.stop="openFilterDialog = true"
>
@@ -80,6 +80,10 @@
</form>
</CommonDialog>
<template #states>
<CommonModelNotification
v-if="isSendSettingsMissing"
:notification="sendSettingsMissingNotification"
/>
<CommonModelNotification
v-if="expiredNotification"
:notification="expiredNotification"
@@ -223,6 +227,27 @@ const saveFilterAndSend = async () => {
hasSetVersionMessage.value = false
}
const isSendSettingsMissing = computed(
() => store.sendSettings && store.sendSettings.length > 0 && !props.modelCard.settings
)
const sendSettingsMissingNotification = computed(() => {
const notification = {} as ModelCardNotification
notification.dismissible = false
notification.level = 'danger'
notification.text = 'Publish settings are corrupted for some reason.'
notification.cta = {
name: 'Refresh',
action: async () => {
await store.patchModel(props.modelCard.modelCardId, {
settings: store.sendSettings
})
}
}
return notification
})
const expiredNotification = computed(() => {
if (!props.modelCard.expired) return