funkwhale/front/src/main.ts

47 wiersze
1.0 KiB
TypeScript
Czysty Zwykły widok Historia

import router from '~/router'
import store from '~/store'
2022-04-19 18:52:04 +00:00
import { createApp, defineAsyncComponent } from 'vue'
2022-04-18 18:39:30 +00:00
import useLogger from '~/composables/useLogger'
2022-04-23 07:26:25 +00:00
import useTheme from '~/composables/useTheme'
useTheme()
2022-04-18 00:40:34 +00:00
2022-04-18 18:39:30 +00:00
const logger = useLogger()
logger.info('Loading environment:', import.meta.env.MODE)
logger.debug('Environment variables:', import.meta.env)
const app = createApp({
2022-04-18 00:40:34 +00:00
components: {
2022-04-19 18:52:04 +00:00
App: defineAsyncComponent(() => import('~/App.vue'))
2022-04-18 00:40:34 +00:00
},
2022-04-17 23:24:50 +00:00
data: () => ({ isMounted: false }),
async mounted () {
this.isMounted = true
},
2022-04-18 08:24:47 +00:00
render (h) {
2022-04-17 23:24:50 +00:00
if (this.isMounted) {
2022-04-23 07:37:43 +00:00
return h('app')
2022-04-17 23:24:50 +00:00
}
2022-04-18 08:24:47 +00:00
// TODO (wvffle): Import fake app component
2022-04-17 23:24:50 +00:00
return h()
}
})
2022-04-18 16:17:51 +00:00
app.use(router)
app.use(store)
2022-04-17 23:24:50 +00:00
const modules: Promise<unknown>[] = []
2022-04-23 12:10:36 +00:00
for (const module of Object.values(import.meta.globEager('./init/*.ts'))) {
2022-04-17 23:24:50 +00:00
modules.push(module.install?.({
app,
router,
store
2022-04-17 23:24:50 +00:00
}))
}
2022-04-18 18:39:30 +00:00
// Wait for all modules to load
Promise.all(modules).finally(() => {
app.mount('#app')
2022-04-18 18:39:30 +00:00
logger.info('Everything loaded!')
})