Files
halo/ui/uc-src/main.ts

57 lines
1.5 KiB
TypeScript

import { setLanguage, setupI18n } from "@/locales";
import { setupApiClient } from "@/setup/setupApiClient";
import { setupComponents } from "@/setup/setupComponents";
import { setupCoreModules, setupPluginModules } from "@/setup/setupModules";
import "@/setup/setupStyles";
import { setupUserPermissions } from "@/setup/setupUserPermissions";
import { setupVueQuery } from "@/setup/setupVueQuery";
import { stores } from "@halo-dev/ui-shared";
import modules from "@uc/modules";
import router from "@uc/router";
import "core-js/es/object/has-own";
import { createPinia } from "pinia";
import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App);
setupComponents(app);
setupI18n(app);
setupVueQuery(app);
setupApiClient();
app.use(createPinia());
await initApp();
async function initApp() {
try {
setupCoreModules({ app, router, platform: "uc", modules });
const currentUserStore = stores.currentUser();
await currentUserStore.fetchCurrentUser();
const globalInfoStore = stores.globalInfo();
await globalInfoStore.fetchGlobalInfo();
await setLanguage();
if (currentUserStore.isAnonymous) {
return;
}
await setupUserPermissions(app);
try {
await setupPluginModules({ app, router, platform: "uc" });
} catch (e) {
console.error("Failed to load plugins", e);
}
} catch (error) {
console.error("Failed to init app", error);
} finally {
app.use(router);
app.mount("#app");
}
}