import config from "./config"; import { client } from "./js/client"; wx.cloud.init({ traceUser: true, env: "educoder", success:console.log, fail: console.error }); App({ globalData: { versionCode: config.versionCode, debug: config.debug, openid:wx.getStorageSync('openid'), isCrawl: false, //是否是爬虫 scene: -1 }, client, openapi(name){ return ({success, fail, complete, ...data}={})=>{ return this.callOpenapi({name, data, success,fail, complete}); } }, cloudapi(name){ return ({success, fail, complete, ...data}={})=>{ return this.callCloudfunction({ name:"cloudapi", data:{name, data}, success, fail, complete }); } }, callOpenapi({name, data, success, fail, complete}){ return this.callCloudfunction({name:"openapi", data:{name, data}, success, fail, complete}); }, cloudfunction(name){ return ({success, fail, complete, ...data}={})=>{ return this.callCloudfunction({name, data, success, fail, complete}); } }, callCloudfunction({name, data, success, fail, complete}){ return new Promise((resolve, reject)=>{ return wx.cloud.callFunction({name, data, success:res=>{ success&&success(res.result); resolve(res.result); complete&&complete(res.result); }, fail:e=>{ fail&&fail(e); reject(e); complete&&complete(e); } }); }); }, realTimeLog:global.realTimeLog, api(name, config) { return client.api(name, config) }, callApi(options) { return client.callApi(options) }, user() { return client.user }, syncUser(options) { return client.syncUser(options) }, updateUserInfo(info){return client.updateUserInfo(info)}, onLaunch: function (options) { this.globalData.scene = options.scene; if(options.scene==1129){ this.globalData.isCrawl = true; // this.cloudfunction("login")({mpcrawl: true}); this.api("accounts.login")(global.accountManager.testAccount) .then(res=>{ let account = { ...res, ...global.accountManager.testAccount}; global.accountManager.setCurrentAccount(account); }); /* 爬虫访问时运行这些没有用 wx.reportMonitor('1', 1); global.realTimeLog.info("爬虫访问", options); global.realTimeLog.setFilterMsg("mpcrawl"); */ }else if(!this.globalData.openid){ this.cloudfunction("login")() .then(res=>{ this.globalData.openid = res.openid; wx.setStorage({ data: res.openid, key: 'openid', }) }) } if (options.referrerInfo && options.referrerInfo.appId) { var db = wx.cloud.database(); let { appId, extraData } = options.referrerInfo; let { scene, path } = options; db.collection("referrer_info") .add({ data: { appId, extraData, scene, path, createdAt: db.serverDate() } }) } /** * 系统升级提醒 this.api("users.system_update")().then(res => { if (res.system_update) { let { subject = "升级服务通知", system_score} = res; if(!system_score){ let {end_time} = res; if(end_time){ const {getFormatDatetime} = require('./js/utils'); system_score = "为了给大家提供更优质的体验,平台正在对系统进行升级,期间系统响应会有一定延迟。系统将于"+getFormatDatetime(new Date(end_time))+"恢复正常。敬请谅解"; }else{ system_score = "为了给大家提供更优质的体验,平台正在对系统进行升级,期间系统响应会有一定延迟,敬请谅解"; } } wx.showModal({ title: subject, content: system_score, showCancel: false }) } }).catch(e=>{}); */ }, onShow() { if (client.user_id && client.user_id != 2) client.getTidingInfo(); }, onPageNotFound(res) { this.realTimeLog.error("page not find!! redirect", res); this.reLaunch({ url: "{main}" }); }, showError(e, duration = 1500) { wx.showToast({ title: e.message, icon: "none", duration }) }, showMsg({message=""}, duration = 1500) { wx.showToast({ title: message, duration }) }, getPageUrl(url, root = "/") { return url.replace(/{(.*)}/, function (match, name) { for (var u of __wxConfig.pages) { if (u.endsWith("/" + name)) return root + u; } for (var u of config.pages) { if (u.endsWith("/" + name)) return root + u; } return match; }); }, reLaunch({ url, success, fail, complete }) { wx.reLaunch({ url: this.getPageUrl(url), success, fail, complete }) }, redirectTo({ url, success, fail, complete }) { wx.redirectTo({ url: this.getPageUrl(url), success, fail, complete }) }, navigateTo({ url, success, fail, complete }) { wx.navigateTo({ url: this.getPageUrl(url), success, fail, complete }) }, shareApp({ imageUrl, path, title }) { return { title: title || "EduCoder教学", imageUrl, path } } }); // 兼容finally if(!Promise.prototype.finally){ Promise.prototype.finally = function (callback) { let P =this.constructor; return this.then( value => P.resolve(callback()).then(() => value), reason => P.resolve(callback()).then(() => {throw reason }) ); }; } /* function getCurrentPath() { let pages = getCurrentPages(); return pages[pages.length - 1].route; } function toAbsPath(current, path) { if (path.startsWith("/")) current = "."; else current = current + "/../"; path = current + path; while (path.indexOf("..") != -1) { path = path.replace(/[^\/]*\/\.\.\//g, "") } while (path.indexOf(".") != -1) { path = path.replace(/\.\//, ""); } return path; } */