main.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. import { createApp } from 'vue'
  3. import '@shared/initializer/translatableMarker'
  4. import App from '@mobile/App.vue'
  5. import { useSessionStore } from '@shared/stores/session'
  6. import '@mobile/styles/main.scss'
  7. import initializeStoreSubscriptions from '@shared/initializer/storeSubscriptions'
  8. import { useApplicationStore } from '@shared/stores/application'
  9. import { useLocaleStore } from '@shared/stores/locale'
  10. import initializeRouter from '@mobile/router'
  11. import { useAuthenticationStore } from '@shared/stores/authentication'
  12. import 'virtual:svg-icons-register' // eslint-disable-line import/no-unresolved
  13. import initializeApp from './initialize'
  14. export default async function mountApp(): Promise<void> {
  15. const app = createApp(App)
  16. initializeApp(app)
  17. initializeRouter(app)
  18. initializeStoreSubscriptions()
  19. const session = useSessionStore()
  20. await session.checkSession()
  21. const application = useApplicationStore()
  22. const initalizeAfterSessionCheck: Array<Promise<unknown>> = [
  23. application.getConfig(),
  24. ]
  25. if (session.id) {
  26. useAuthenticationStore().authenticated = true
  27. initalizeAfterSessionCheck.push(session.getCurrentUser())
  28. }
  29. await Promise.all(initalizeAfterSessionCheck)
  30. const locale = useLocaleStore()
  31. if (!locale.localeData) {
  32. await locale.setLocale()
  33. }
  34. app.mount('#app')
  35. }