63 lines
1.8 KiB
Plaintext
Raw Normal View History

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>