Files
YelayMaths/yelaymaths/app.js
T
2026-09-30 03:38:10 +08:00

50 lines
1.5 KiB
JavaScript

// app.js
const api = require('./utils/api');
const store = require('./utils/store');
App({
globalData: {
/** 初始化完成的 Promise,页面 onLoad 里等它即可,避免首屏读不到数据 */
ready: null,
},
onLaunch() {
this.globalData.ready = this.bootstrap();
},
/**
* 启动流程:配置再静默登录,最后拉已购课程。
*
* 每一步失败都不阻断启动:配置缺失时页面按空值渲染,登录失败时按未登录渲染。
* 旧版本在页面 data 里同步读缓存、而缓存由异步写入,首次安装必然报错,这里不再重蹈。
*/
bootstrap() {
const tasks = [
api
.getConfig()
.then((cfg) => store.setSiteConfig(cfg))
.catch((err) => console.warn('[app] 配置加载失败', err)),
api
.login()
.then((res) => {
// 静默登录只建立身份。用户从没主动登录过、或者已经退出,就不去拉已购课程,
// 否则知识页会在「未登录」状态下又冒出课程列表。
if (!res || !res.user || res.user.isLogin !== 1) {
store.setEntitlements([]);
return null;
}
return api.getEntitlements().then((list) => store.setEntitlements(list));
})
.catch((err) => console.warn('[app] 登录或权益加载失败', err)),
];
return Promise.all(tasks);
},
/** 页面调用它确保初始化完成。 */
ready() {
return this.globalData.ready || Promise.resolve();
},
});