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 }); } }))