101 lines
3.2 KiB
JavaScript
101 lines
3.2 KiB
JavaScript
import { injectApp, waitLogin, gatewayHttpClient } from '@jdmini/api'
|
|
const storage = require('./utils/storage.js')
|
|
|
|
App(injectApp()({
|
|
globalData: {
|
|
userSettings: null
|
|
},
|
|
async onLaunch() {
|
|
if (wx.canIUse('getUpdateManager')) {
|
|
const updateManager = wx.getUpdateManager();
|
|
updateManager.onCheckForUpdate(function (res) {
|
|
if (res.hasUpdate) {
|
|
updateManager.onUpdateReady(function () {
|
|
wx.showModal({
|
|
title: '更新提示',
|
|
content: '新版本已经准备好,是否重启应用?',
|
|
success(res) {
|
|
if (res.confirm) {
|
|
updateManager.applyUpdate();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
}
|
|
// 等待登录完成
|
|
await waitLogin()
|
|
// 初始化用户设置(计算学习天数)
|
|
this.globalData.userSettings = storage.initSettings()
|
|
},
|
|
|
|
// 内容安全
|
|
async checkdata(txt = '', checkType, mediaUrl = '') {
|
|
try {
|
|
if (!checkType || (checkType !== 2 && checkType !== 3)) {
|
|
throw new Error('checkType必须为2(图片检测)或3(文本检测)')
|
|
}
|
|
if (checkType === 3 && !txt) {
|
|
throw new Error('文本检测时content不能为空')
|
|
}
|
|
if (checkType === 2 && !mediaUrl) {
|
|
throw new Error('图片检测时mediaUrl不能为空')
|
|
}
|
|
const postdata = { content: txt, checkType: checkType, mediaUrl: mediaUrl }
|
|
const data = await gatewayHttpClient.request('/wx/v1/api/app/content/check', 'post', postdata)
|
|
if (data.code === 200) {
|
|
if (checkType == 3) return data.data.suggest === 'pass' ? 1 : 2
|
|
if (checkType == 2) return data.data.id || null
|
|
} else {
|
|
return 2
|
|
}
|
|
} catch (error) {
|
|
console.error('checkdata error:', error)
|
|
return 2
|
|
}
|
|
},
|
|
|
|
async checkimage(imgurl) {
|
|
wx.showLoading({ title: '正在检查图片...', mask: true });
|
|
try {
|
|
const upfileData = await gatewayHttpClient.uploadFile(imgurl, 'image');
|
|
const checkid = await this.checkdata('', 2, upfileData.data.url)
|
|
let retryCount = 0;
|
|
const maxRetries = 5;
|
|
while (retryCount < maxRetries) {
|
|
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
const passcode = await this.checkSafetyResults(checkid);
|
|
switch (passcode) {
|
|
case 100:
|
|
wx.hideLoading();
|
|
return upfileData.data;
|
|
case 20001:
|
|
case 20002:
|
|
case 20006:
|
|
case 21000:
|
|
wx.hideLoading();
|
|
await gatewayHttpClient.deleteFile(upfileData.data.id);
|
|
this.showwarning('图片含有违规内容,请重新选择');
|
|
return null;
|
|
default:
|
|
break;
|
|
}
|
|
retryCount++;
|
|
}
|
|
wx.hideLoading();
|
|
await gatewayHttpClient.deleteFile(upfileData.data.id);
|
|
wx.showToast({ title: '图片检查超时,请重试', icon: 'none' });
|
|
return null;
|
|
} catch (error) {
|
|
wx.hideLoading();
|
|
wx.showToast({ title: '检查失败,请重试', icon: 'none' });
|
|
return null;
|
|
}
|
|
},
|
|
|
|
showwarning(txt) {
|
|
wx.showModal({ title: '提示', content: txt, showCancel: false });
|
|
}
|
|
}))
|