main.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import { createApp, ref } from 'vue'
  2. import { createPinia } from 'pinia'
  3. import App from './App.vue'
  4. import router from './router'
  5. import http from '@/plugins/http'
  6. import { IonicVue } from '@ionic/vue'
  7. import * as IonComponents from '@ionic/vue'
  8. import i18n from './locales'
  9. import Vant from 'vant'
  10. import toast from '@/utils/toast'
  11. import setDefaultOptions from 'date-fns/setDefaultOptions'
  12. import zhTW from 'vant/es/locale/lang/zh-TW'
  13. import { StatusBar, Style } from '@capacitor/status-bar'
  14. import { Capacitor } from '@capacitor/core'
  15. import { useBackButton } from '@ionic/vue'
  16. import { SplashScreen } from '@capacitor/splash-screen'
  17. // import { Openinstall } from 'capacitor-openinstall'
  18. import { Locale as VantLocale, Lazyload } from 'vant'
  19. import vantEnUS from 'vant/es/locale/lang/en-US'
  20. import { useStorage } from '@vueuse/core'
  21. import { init as initEruda } from '@/utils/console'
  22. import { Network } from '@capacitor/network'
  23. import { SafeArea } from 'capacitor-plugin-safe-area'
  24. import qs from 'qs'
  25. import { App as AppPlugin } from '@capacitor/app'
  26. import { emitter } from '@/utils/eventBus'
  27. import { checkUpdate } from '@/plugins/updater'
  28. import 'normalize.css/normalize.css'
  29. /* Core CSS required for Ionic components to work properly */
  30. import '@ionic/vue/css/core.css'
  31. /* Basic CSS for apps built with Ionic */
  32. import '@ionic/vue/css/normalize.css'
  33. import '@ionic/vue/css/structure.css'
  34. import '@ionic/vue/css/typography.css'
  35. /* Optional CSS utils that can be commented out */
  36. import '@ionic/vue/css/padding.css'
  37. import '@ionic/vue/css/float-elements.css'
  38. import '@ionic/vue/css/text-alignment.css'
  39. import '@ionic/vue/css/text-transformation.css'
  40. import '@ionic/vue/css/flex-utils.css'
  41. import '@ionic/vue/css/display.css'
  42. import 'vant/lib/index.css'
  43. import './styles/main.less'
  44. import './styles/fonts.less'
  45. import './styles/theme/variables.less'
  46. import './styles/tailwind.css'
  47. import common from './mixins/common'
  48. const invitor = useStorage('invitor', null, localStorage)
  49. const urlParams = qs.parse(location.search.slice(1))
  50. console.log('urlParams', urlParams)
  51. if (urlParams.invitor) {
  52. invitor.value = urlParams.invitor
  53. }
  54. const app = createApp(App)
  55. app.use(i18n)
  56. app.use(IonicVue)
  57. app.use(router)
  58. app.use(createPinia())
  59. app.use(http)
  60. VantLocale.use('zh-TW', zhTW)
  61. app.use(Vant)
  62. app.use(toast)
  63. app.mixin(common)
  64. app.use(Lazyload)
  65. // ionic components
  66. Object.keys(IonComponents).forEach(key => {
  67. if (/^Ion[A-Z]\w+$/.test(key)) {
  68. app.component(key, IonComponents[key])
  69. }
  70. })
  71. router.isReady().then(() => {
  72. app.mount('#app')
  73. })
  74. // if (navigator.language === 'zh-CN') {
  75. // setDefaultOptions({ locale: enUS })
  76. // } else {
  77. // setDefaultOptions({ locale: enUS })
  78. // }
  79. const firstRun = useStorage('firstRun', true)
  80. const initOpeninstall = () => {
  81. // Openinstall.init()
  82. // const handleData = data => {
  83. // if (data && data.data) {
  84. // let params = JSON.parse(data.data)
  85. // if (params.invitor) {
  86. // localStorage.setItem('invitor', params.invitor)
  87. // invitor.value = params.invitor
  88. // }
  89. // }
  90. // }
  91. // Openinstall.addListener('wakeUp', data => {
  92. // console.log('wakeUp data:', data)
  93. // })
  94. // Openinstall.getInstallCanRetry(data => {
  95. // console.log('install data:', data)
  96. // handleData(data)
  97. // })
  98. // Network.addListener('networkStatusChange', status => {
  99. // if (status.connected) {
  100. // //checkUpdate()
  101. // }
  102. // })
  103. }
  104. if (Capacitor.isNativePlatform()) {
  105. StatusBar.setStyle({ style: Style.Dark })
  106. if (Capacitor.getPlatform() === 'android') {
  107. StatusBar.setOverlaysWebView({ overlay: true })
  108. const style = document.documentElement.style
  109. if (Capacitor.isPluginAvailable('SafeArea')) {
  110. SafeArea.getSafeAreaInsets().then(({ insets }) => {
  111. style.setProperty('--ion-safe-area-top', insets.top + 'px')
  112. // style.setProperty('--ion-safe-area-bottom', insets.bottom + 'px')
  113. })
  114. }
  115. }
  116. // initAF()
  117. Network.getStatus().then(status => {
  118. console.log('networkStatus:', status)
  119. if (status.connected) {
  120. checkUpdate()
  121. }
  122. })
  123. }
  124. if (useStorage('showConsole', 0).value > new Date().getTime()) {
  125. initEruda()
  126. }
  127. if (location.origin.includes('http://192.168')) {
  128. initEruda()
  129. }
  130. firstRun.value = false