vitepress-theme-base-teek
Version:
查看 [使用说明](https://vp.xiaoying.org.cn/pages/9d746f)
72 lines (64 loc) • 2.52 kB
text/typescript
import DefaultTheme from 'vitepress/theme'
import { inBrowser, Theme } from "vitepress";
import MyLayout from "./layout"
import Login from "./components/Login";
import { checkAuth, verifyAuth } from "./components/Login/helper.js";
import Busuanzi from "./helper/busuanzi";
import { NProgress } from 'nprogress-v2/dist/index.js' // 进度条组件
import 'nprogress-v2/dist/index.css' // 进度条样式
import 'element-plus/dist/index.css'
import './styles/index.scss'
export * from "./components";
export * from "./utils"
export * from "./hooks"
export * from "./helper"
export {
createContainerThenUse,
createContainerThenGet,
createContainersThenUse,
createContainersThenGet,
} from "./markdown/plugins/container";
export default {
extends: DefaultTheme,
Layout: MyLayout,
enhanceApp({ app, router, siteData }) {
// 注册主题自带的组件
app.component('Login', Login)
if(inBrowser){
NProgress.configure({ showSpinner: false })
router.onBeforeRouteChange = () => {
NProgress.start() // 开始进度条
}
}
let { isLogin, List, type, apiUrl } = siteData.value.themeConfig.loginInfo
// 获取可能已有的 onAfterRouteChange
const selfOnAfterRouteChange = router.onAfterRouteChange;
router.onAfterRouteChange = (href: string) => {
// 调用可能已有的 onAfterRouteChange
selfOnAfterRouteChange?.(href);
// 调用自己的函数
login();
Busuanzi()
if(inBrowser){
NProgress.done() // 停止进度条
}
};
const login = () => {
if (router.route.path !== '/' && router.route.path !== '/login' ) {
if (List.includes(router.route.path) || isLogin) {
if (type === 'supabase') {
verifyAuth(apiUrl).then(valid => {
if (!valid) {
router.go(`/login?redirect=${ router.route.path }` || '/').then(r => {})
}
})
} else {
if (!checkAuth()) {
router.go(`/login?redirect=${ router.route.path }` || '/').then(r => {})
}
}
}
}
}
}
} satisfies Theme