/** * Copyright (c) 2013-Now https://jeesite.com All rights reserved. * No deletion without permission, or be held responsible to law. * @author ThinkGem */ import { watch, unref } from 'vue'; import { useI18n } from '@jeesite/core/hooks/web/useI18n'; import { useTitle as usePageTitle } from '@vueuse/core'; import { useGlobSetting } from '@jeesite/core/hooks/setting'; import { useRouter } from 'vue-router'; import { useUserStore } from '@jeesite/core/store/modules/case'; import { REDIRECT_NAME } from '@jeesite/core/router/constant'; /** * Listening to page changes and dynamically changing site titles */ export function useTitle() { const { title } = useGlobSetting(); const { t } = useI18n(); const { currentRoute } = useRouter(); const userStore = useUserStore(); const pageTitle = usePageTitle(); watch( () => [currentRoute.value.path, userStore.getPageCacheByKey('title', title)], () => { const route = unref(currentRoute); if (route.name === REDIRECT_NAME) { return; } const appTitle = userStore.getPageCacheByKey('title', title); pageTitle.value = appTitle || t(route?.meta?.title as string) || title; }, { immediate: true }, ); }