main.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. import { createApp, unref } 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.css'
  7. import initializeApolloClient from '@mobile/server/apollo'
  8. import initializeStore from '@shared/stores'
  9. import initializeStoreSubscriptions from '@shared/initializer/storeSubscriptions'
  10. import initializeGlobalComponents from '@shared/initializer/globalComponents'
  11. import initializeRouter from '@mobile/router'
  12. import useApplicationStore from '@shared/stores/application'
  13. import { i18n } from '@shared/i18n'
  14. import useLocaleStore from '@shared/stores/locale'
  15. import useAuthenticationStore from '@shared/stores/authentication'
  16. import 'virtual:svg-icons-register' // eslint-disable-line import/no-unresolved
  17. import initializeForm from '@mobile/form'
  18. import { storeToRefs } from 'pinia'
  19. export default async function mountApp(): Promise<void> {
  20. const app = createApp(App)
  21. // TODO remove when Vue 3.3 released
  22. app.config.unwrapInjectedRef = true
  23. initializeApolloClient(app)
  24. initializeStore(app)
  25. initializeRouter(app)
  26. initializeGlobalComponents(app)
  27. initializeStoreSubscriptions()
  28. const session = useSessionStore()
  29. await session.checkSession()
  30. const application = useApplicationStore()
  31. const { config } = storeToRefs(application)
  32. const initalizeAfterSessionCheck: Array<Promise<unknown>> = [
  33. application.getConfig(),
  34. ]
  35. if (session.id) {
  36. useAuthenticationStore().authenticated = true
  37. initalizeAfterSessionCheck.push(session.getCurrentUser())
  38. }
  39. await Promise.all(initalizeAfterSessionCheck)
  40. const locale = useLocaleStore()
  41. if (!locale.localeData) {
  42. await locale.updateLocale()
  43. }
  44. app.config.globalProperties.i18n = i18n
  45. app.config.globalProperties.$t = i18n.t.bind(i18n)
  46. Object.defineProperty(app.config.globalProperties, '$c', {
  47. enumerable: true,
  48. get: () => unref(config),
  49. })
  50. initializeForm(app)
  51. app.mount('#app')
  52. }