diff --git a/apps/stage-tamagotchi/src/renderer/App.vue b/apps/stage-tamagotchi/src/renderer/App.vue index 609722eb0..d0763aad2 100644 --- a/apps/stage-tamagotchi/src/renderer/App.vue +++ b/apps/stage-tamagotchi/src/renderer/App.vue @@ -2,10 +2,11 @@ import { defineInvoke, defineInvokeHandler } from '@moeru/eventa' import { useDisplayModelsStore } from '@proj-airi/stage-ui/stores/display-models' import { useOnboardingStore } from '@proj-airi/stage-ui/stores/onboarding' +import { installChatContextBridge } from '@proj-airi/stage-ui/stores/plugins/chat-context-bridge' import { useSettings } from '@proj-airi/stage-ui/stores/settings' import { useTheme } from '@proj-airi/ui' import { storeToRefs } from 'pinia' -import { onMounted, watch } from 'vue' +import { onMounted, onUnmounted, watch } from 'vue' import { useI18n } from 'vue-i18n' import { RouterView, useRoute, useRouter } from 'vue-router' @@ -21,6 +22,7 @@ const { language, themeColorsHue, themeColorsHueDynamic } = storeToRefs(settings const onboardingStore = useOnboardingStore() const router = useRouter() const route = useRoute() +let disposeChatBridge: (() => void) | undefined watch(language, () => { i18n.locale.value = language.value @@ -38,6 +40,9 @@ onMounted(async () => { await displayModelsStore.loadDisplayModelsFromIndexedDB() await settingsStore.initializeStageModel() + const bridge = installChatContextBridge() + disposeChatBridge = bridge.dispose + const context = useElectronEventaContext() const startTrackingCursorPoint = defineInvoke(context.value, electronStartTrackMousePosition) await startTrackingCursorPoint() @@ -53,6 +58,8 @@ watch(themeColorsHue, () => { watch(themeColorsHueDynamic, () => { document.documentElement.classList.toggle('dynamic-hue', themeColorsHueDynamic.value) }, { immediate: true }) + +onUnmounted(() => disposeChatBridge?.())