huahuazenmehua/app.js

101 lines
3.2 KiB
JavaScript
Raw Normal View History

2026-05-08 17:00:10 +08:00
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 });
}
}))