You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
5.8 KiB
206 lines
5.8 KiB
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;
|
|
}
|
|
*/
|
|
|