App.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <script>
  2. import { getToken, getCurrentUserInfo, normalizeUserPayload } from './utils/api'
  3. import { connectWebSocket } from './composables/useWebSocket'
  4. import { setupAppNotifications } from './utils/notificationSetup'
  5. const USER_KEY = 'current_user'
  6. // #ifdef APP-PLUS
  7. import { scheduleAndroidApkUpdateCheck, maybeCheckAndroidApkUpdateByInterval } from './utils/appUpgrade'
  8. // #endif
  9. export default {
  10. onLaunch: async function() {
  11. // #ifdef APP-PLUS
  12. if (uni.getSystemInfoSync().platform === 'android') {
  13. scheduleAndroidApkUpdateCheck()
  14. }
  15. // #endif
  16. const token = getToken()
  17. if (!token) {
  18. uni.reLaunch({ url: '/pages/login/index' })
  19. return
  20. }
  21. uni.reLaunch({ url: '/pages/index/index' })
  22. // 已登录启动即建 WS;登录页 setToken 后也会 connect(reLaunch 不会再次 onLaunch)
  23. connectWebSocket()
  24. // #ifdef APP-PLUS
  25. setupAppNotifications()
  26. // #endif
  27. getCurrentUserInfo(token)
  28. .then((me) => {
  29. const u = normalizeUserPayload(me)
  30. if (!u) return
  31. const orgName = u.orgName || u.org_name || ''
  32. try {
  33. const prev = uni.getStorageSync(USER_KEY)
  34. const base = prev && typeof prev === 'object' ? prev : {}
  35. uni.setStorageSync(USER_KEY, {
  36. ...base,
  37. ...u,
  38. orgName,
  39. org_name: orgName
  40. })
  41. } catch (e) {}
  42. })
  43. .catch(() => {})
  44. },
  45. onShow: function() {
  46. console.log('App Show')
  47. // #ifdef APP-PLUS
  48. if (uni.getSystemInfoSync().platform === 'android') {
  49. maybeCheckAndroidApkUpdateByInterval()
  50. }
  51. // #endif
  52. if (getToken()) {
  53. connectWebSocket()
  54. }
  55. },
  56. onHide: function() {
  57. console.log('App Hide')
  58. }
  59. }
  60. </script>
  61. <style>
  62. /*每个页面公共css */
  63. </style>