refactor(fe): reset view mode onBeforeUnmount

This commit is contained in:
andrewwallacespeckle
2025-08-12 12:20:17 +01:00
parent 6d857fe7f3
commit ef27e0fd48
2 changed files with 11 additions and 51 deletions
@@ -8,6 +8,7 @@
<script setup lang="ts">
import { useInjectedViewer } from '~~/lib/viewer/composables/setup'
import { useCommentContext } from '~~/lib/viewer/composables/commentManagement'
import { useViewModeUtilities } from '~/lib/viewer/composables/ui'
const rendererparent = ref<HTMLElement>()
const {
@@ -17,6 +18,7 @@ const {
} = useInjectedViewer()
const { cleanupThreadContext } = useCommentContext()
const { resetViewMode } = useViewModeUtilities()
onMounted(async () => {
if (!import.meta.client) return
@@ -34,6 +36,7 @@ onBeforeUnmount(() => {
if (!import.meta.client) return
container.style.display = 'none'
cleanupThreadContext()
resetViewMode()
document.body.appendChild(container)
})
</script>
@@ -531,7 +531,6 @@ export function useViewModeUtilities() {
const { viewMode } = useInjectedViewerInterfaceState()
const { isLightTheme } = useTheme()
const mp = useMixpanel()
const logger = useLogger()
const edgesEnabled = ref(true)
const edgesWeight = ref(1)
@@ -607,58 +606,15 @@ export function useViewModeUtilities() {
color: color.toString(16).padStart(6, '0')
})
}
// Get the current view mode from the extension and sync the UI state
const initializeFromViewerState = () => {
try {
const viewModesExt = instance.getExtension(ViewModes)
if (viewModesExt) {
const extensionViewMode = viewModesExt.viewMode
if (extensionViewMode !== undefined) {
viewMode.value = extensionViewMode
}
const renderer = instance.getRenderer()
const currentPipeline = renderer?.pipeline
if (currentPipeline && currentPipeline.options) {
const currentOptions = currentPipeline.options as Record<string, unknown>
if (typeof currentOptions.edges === 'boolean') {
edgesEnabled.value = currentOptions.edges
}
const edgesPasses = currentPipeline.getPass('EDGES')
if (edgesPasses.length > 0) {
const edgesPass = edgesPasses[0] as unknown as Record<string, unknown>
const edgesPassOptions = edgesPass._options as Record<string, unknown>
if (
edgesPassOptions &&
typeof edgesPassOptions.outlineThickness === 'number'
) {
edgesWeight.value = edgesPassOptions.outlineThickness
}
if (
edgesPassOptions &&
typeof edgesPassOptions.outlineOpacity === 'number'
) {
outlineOpacity.value = edgesPassOptions.outlineOpacity
}
if (edgesPassOptions && typeof edgesPassOptions.outlineColor === 'number') {
edgesColor.value = edgesPassOptions.outlineColor
}
}
}
}
} catch (error) {
logger.warn('Could not initialize from viewer state, using defaults:', error)
}
const resetViewMode = () => {
setViewMode(ViewMode.DEFAULT)
edgesEnabled.value = true
edgesWeight.value = 1
outlineOpacity.value = 0.75
edgesColor.value = defaultColor.value
}
onMounted(() => {
initializeFromViewerState()
})
return {
currentViewMode,
setViewMode,
@@ -667,7 +623,8 @@ export function useViewModeUtilities() {
edgesWeight,
setEdgesWeight,
setEdgesColor,
edgesColor
edgesColor,
resetViewMode
}
}