skyblued 2 years ago
parent
commit
ab5f28c25f
3 changed files with 38 additions and 41 deletions
  1. 14 16
      index.html
  2. 14 24
      src/helpers/request.ts
  3. 10 1
      src/subpages/colexiu/App.tsx

+ 14 - 16
index.html

@@ -19,24 +19,22 @@
       })
     }
 
-    // 获取token
-    const instance = window.ORCHESTRA || (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.ORCHESTRA)
-    if (instance) {
-      const sendData = { api: 'getToken', content: { uuid: '' + Date.now() + Math.floor(Math.random() * 1000000) } }
-      function setToken(evt) {
-        window.removeEventListener('message', setToken)
-        try {
-          const data = typeof evt.data === "object" ? evt.data : JSON.parse(evt.data)
-          if (data.api === 'getToken') {
-            const token = `${data.content.tokenType} ${data.content.accessToken}`
-            sessionStorage.setItem('Authorization', token)
-          }
-
-        } catch (error) { }
+    function _postMessage(data, callback) {
+      const instance = window.ORCHESTRA || (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.ORCHESTRA)
+      if (instance) {
+        const uuid = '' + Date.now() + Math.floor(Math.random() * 1000000)
+        data.content = data.content ? { ...data.content, uuid } : { uuid }
+        console.log('h5发送:', JSON.stringify(data))
+        instance.postMessage(JSON.stringify(data))
       }
-      window.addEventListener('message', setToken)
-      instance.postMessage(JSON.stringify(sendData))
     }
+    _postMessage({
+      api: 'cloudLoading',
+      content: {
+        show: true,
+        type: 'fullscreen',
+      },
+    })
   </script>
   <style>
     #lottieWeb {

+ 14 - 24
src/helpers/request.ts

@@ -6,15 +6,15 @@ import { getRequestHostname, browser } from '/src/helpers/utils'
 import { postMessage } from './native-message'
 
 export interface SearchInitParams {
-  rows?: string | number;
-  page?: string | number;
+  rows?: string | number
+  page?: string | number
 }
 
 export interface InitSearchRespones {
   data: {
-    rows: any[],
+    rows: any[]
     [key: string]: any
-  },
+  }
   [key: string]: any
 }
 
@@ -28,22 +28,12 @@ const request = extend({
 
 request.use(async (ctx, next) => {
   const { url, options } = ctx.req
-  // const prefix = (options.prefix || '')
-  // const baseUrl: string = url.replace(prefix, '') || ''
-  // const linkUrl: string = (ApiRouter as any)[baseUrl]
-  // if (linkUrl) {
-  //   ctx.req.url = prefix + linkUrl
-  // }
   await next()
 })
 
 request.interceptors.request.use(
   (url, options: any) => {
-    const Authorization = (sessionStorage.getItem('Authorization') || '')
-    const authHeaders: any = {}
-    if (Authorization && !['/api-auth/usernameLogin', '/api-auth/smsLogin', '/api-auth/code/sendSms'].includes(url)) {
-      authHeaders.Authorization = Authorization
-    }
+    const Authorization = sessionStorage.getItem('Authorization') || ''
     return {
       url,
       options: {
@@ -51,9 +41,9 @@ request.interceptors.request.use(
         params: cleanDeep(options.params),
         headers: {
           ...options.headers,
-          ...authHeaders
-        }
-      }
+          Authorization,
+        },
+      },
     }
   },
   { global: false }
@@ -75,13 +65,13 @@ request.interceptors.response.use(
       }
       const browserInfo = browser()
       if (data.code === 403 && browserInfo.isApp && !isOpenLogin) {
-        if(browserInfo.android) {
+        if (browserInfo.android) {
           postMessage({
-            api: 'login'
-          });
-          (window as any).DAYA.postMessage(JSON.stringify({api: 'login'}))
-        } else if(browserInfo.iPhone) {
-          (window as any).webkit.messageHandlers.DAYA.postMessage(JSON.stringify({api: 'login'}))
+            api: 'login',
+          })
+          ;(window as any).DAYA.postMessage(JSON.stringify({ api: 'login' }))
+        } else if (browserInfo.iPhone) {
+          ;(window as any).webkit.messageHandlers.DAYA.postMessage(JSON.stringify({ api: 'login' }))
         }
       }
       throw new Error(msg)

+ 10 - 1
src/subpages/colexiu/App.tsx

@@ -8,6 +8,7 @@ import { browser, getPlatform, getRequestHostname } from '/src/helpers/utils'
 import HomeIndex from './index'
 import Empty from '/src/components/empty'
 import styles from './index.module.less'
+import { promisefiyPostMessage } from '/src/helpers/native-message'
 
 let startTime = Date.now()
 let timer = null as any
@@ -83,6 +84,15 @@ export default defineComponent({
       sessionStorage.setItem('Authorization', route.query.Authorization as string)
     }
     const getUserInfo = async () => {
+      // 验证token
+      const token = sessionStorage.getItem('Authorization')!
+      if (!token) {
+        const res = await promisefiyPostMessage({ api: 'getToken' })
+        if (res?.content?.accessToken) {
+          sessionStorage.setItem('Authorization', res.content.tokenType + ' ' + res.content.accessToken)
+        }
+      }
+
       try {
         const res: any = await request.get(`/user/getUserInfo`)
         Object.assign(userInfo, res?.data || {})
@@ -92,7 +102,6 @@ export default defineComponent({
       }
     }
 
-
     onMounted(() => {
       getUserInfo()
       clearInterval(timer)