Wait for all modules to load

This commit is contained in:
Kasper Seweryn 2022-04-18 01:24:50 +02:00 committed by Georg Krause
parent ddb035e418
commit b33af58147
2 changed files with 19 additions and 6 deletions

View File

@ -221,5 +221,4 @@ const showSetInstanceModal = ref(false)
<style lang="scss">
@import "style/_main";
</style>

View File

@ -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<unknown>[] = []
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!')
})