| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- /**
- * 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 },
- );
- }
|