diff --git a/front/src/App.vue b/front/src/App.vue
index 7578f1fb3..389addcbe 100644
--- a/front/src/App.vue
+++ b/front/src/App.vue
@@ -221,5 +221,4 @@ const showSetInstanceModal = ref(false)
diff --git a/front/src/main.ts b/front/src/main.ts
index 2348e6db1..07e266c07 100644
--- a/front/src/main.ts
+++ b/front/src/main.ts
@@ -1,5 +1,4 @@
import logger from '~/logging'
-import App from '~/App.vue'
import router from '~/router'
import VueLazyload from 'vue-lazyload'
import store from '~/store'
@@ -15,21 +14,36 @@ sync(store, router)
const app = createApp({
store,
router,
- render: (h: CreateElement) => h(App)
+ data: () => ({ isMounted: false }),
+ async mounted () {
+ this.isMounted = true
+ },
+ render (h: CreateElement) {
+ if (this.isMounted) {
+ return import('~/App.vue')
+ }
+
+ // TODO (wvffle): Import fake app component
+ return h()
+ }
})
app.use(VueCompositionAPI)
app.use(VueLazyload)
+const modules: Promise[] = []
for (const module of Object.values(import.meta.globEager('./modules/*.ts'))) {
- module.install?.({
+ modules.push(module.install?.({
app,
router,
store
- })
+ }))
}
-store.dispatch('instance/fetchFrontSettings').finally(() => {
+store.dispatch('instance/fetchFrontSettings').finally(async () => {
+ // Wait for all modules to load
+ await Promise.all(modules)
+
app.mount('#app')
logger.default.info('Everything loaded!')
})