72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
import {useUserStore} from "@/store/user.js";
|
|
import {useSettingStore} from "@/store/setting.js";
|
|
import {useAccountStore} from "@/store/account.js";
|
|
import {loginUserInfo} from "@/request/my.js";
|
|
import {permsToRouter} from "@/perm/perm.js";
|
|
import router from "@/router";
|
|
import {websiteConfig} from "@/request/setting.js";
|
|
import i18n from "@/i18n/index.js";
|
|
|
|
export async function init() {
|
|
document.title = '\u200B'
|
|
|
|
const settingStore = useSettingStore();
|
|
const userStore = useUserStore();
|
|
const accountStore = useAccountStore();
|
|
|
|
const token = localStorage.getItem('token');
|
|
if (!settingStore.lang) {
|
|
let lang = navigator.language.split('-')[0]
|
|
lang = lang === 'zh' ? lang : 'en'
|
|
settingStore.lang = lang
|
|
}
|
|
|
|
i18n.global.locale.value = settingStore.lang
|
|
|
|
let setting = null;
|
|
|
|
if (token) {
|
|
const userPromise = loginUserInfo().catch(e => {
|
|
console.error(e);
|
|
return null;
|
|
});
|
|
|
|
const [s, user] = await Promise.all([websiteConfig(), userPromise]);
|
|
setting = s;
|
|
settingStore.settings = setting;
|
|
settingStore.domainList = setting.domainList;
|
|
document.title = setting.title;
|
|
|
|
if (user) {
|
|
accountStore.currentAccountId = user.account.accountId;
|
|
accountStore.currentAccount = user.account;
|
|
userStore.user = user;
|
|
|
|
const routers = permsToRouter(user.permKeys);
|
|
routers.forEach(routerData => {
|
|
router.addRoute('layout', routerData);
|
|
});
|
|
}
|
|
|
|
} else {
|
|
setting = await websiteConfig();
|
|
settingStore.settings = setting;
|
|
settingStore.domainList = setting.domainList;
|
|
document.title = setting.title;
|
|
}
|
|
|
|
removeLoading();
|
|
}
|
|
|
|
function removeLoading() {
|
|
if (window.innerWidth < 1025) {
|
|
document.documentElement.style.setProperty('--loading-hide-transition', 'none')
|
|
}
|
|
const doc = document.getElementById('loading-first');
|
|
doc.classList.add('loading-hide')
|
|
setTimeout(() => {
|
|
doc.remove()
|
|
},1000)
|
|
}
|
|
|