2021-12-28 12:58:20 +08:00
|
|
|
<script>
|
2022-02-09 00:23:04 +08:00
|
|
|
/**
|
|
|
|
* 应用级别的配置,供所有页面公用
|
|
|
|
*/
|
2021-12-28 12:58:20 +08:00
|
|
|
|
2022-02-09 00:23:04 +08:00
|
|
|
const $utils = require('./helper/utils').default
|
|
|
|
const $apis = require('./helper/apis').default
|
|
|
|
const $storage = require('@system.storage')
|
2021-12-28 12:58:20 +08:00
|
|
|
|
2022-02-09 00:23:04 +08:00
|
|
|
console.log('app: create channel');
|
|
|
|
const appInitC = new BroadcastChannel('init');
|
2021-12-28 12:58:20 +08:00
|
|
|
|
2022-02-09 00:23:04 +08:00
|
|
|
/* @desc: 注入方法至全局 global,以便页面调用 */
|
|
|
|
const hook2global = Object.getPrototypeOf(global) || global;
|
|
|
|
hook2global.$utils = $utils
|
|
|
|
hook2global.API = $apis
|
|
|
|
|
|
|
|
const _promiseFactory = (pointer, params = {}) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
params = Object.assign({
|
|
|
|
success: (data) => { resolve(data); },
|
|
|
|
fail: (err, code) => { reject(err, code) }
|
|
|
|
}, params);
|
|
|
|
pointer(params);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
hook2global.promiseFactory = _promiseFactory;
|
|
|
|
|
|
|
|
const userinfoFromToken = async (token) => {
|
|
|
|
$apis.setToken(token)
|
|
|
|
let userinfo = await $apis.userInfo()
|
|
|
|
userinfo.token = token
|
|
|
|
hook2global.$userinfo = userinfo
|
|
|
|
_promiseFactory($storage.set, { key: 'token', value: token })
|
|
|
|
appInitC.postMessage(1)
|
|
|
|
appInitC.close()
|
|
|
|
}
|
|
|
|
|
|
|
|
export default {
|
|
|
|
onCreate() {
|
|
|
|
console.log('app: init oncreate');
|
|
|
|
appInitC.onmessage = ({ data: token }) => {
|
|
|
|
console.log('app: login success, data=', JSON.stringify(token));
|
|
|
|
userinfoFromToken(token)
|
|
|
|
}
|
|
|
|
(async () => {
|
|
|
|
let token = await _promiseFactory($storage.get, { key: 'token' })
|
|
|
|
.catch((data, code) => {
|
|
|
|
console.warn(`get token from storage fail, code = ${code}`)
|
|
|
|
})
|
|
|
|
console.log(`app: get token = ${token} from storage success`)
|
|
|
|
if (token.length === 0) {
|
|
|
|
console.log('app: init token.length==0, send init message');
|
|
|
|
appInitC.postMessage(0)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
userinfoFromToken(token)
|
|
|
|
})()
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2021-12-28 12:58:20 +08:00
|
|
|
</script>
|