feat(release): v3.4.13 experience optimizations across admin, mini-user, and H5 login
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import Taro from '@tarojs/taro';
|
||||
import { fetchClientConfig } from './pay-wechat';
|
||||
|
||||
/** 与 package.json version 同步,供服务端 minClientVersion 比对 */
|
||||
export const APP_VERSION = '3.4.13';
|
||||
|
||||
function parseSemver(v: string): number[] {
|
||||
return v.split('.').map((n) => parseInt(n, 10) || 0);
|
||||
}
|
||||
|
||||
export function compareSemver(a: string, b: string): number {
|
||||
const pa = parseSemver(a);
|
||||
const pb = parseSemver(b);
|
||||
const len = Math.max(pa.length, pb.length);
|
||||
for (let i = 0; i < len; i += 1) {
|
||||
const da = pa[i] ?? 0;
|
||||
const db = pb[i] ?? 0;
|
||||
if (da !== db) return da - db;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
export async function checkClientVersionGate() {
|
||||
try {
|
||||
const config = await fetchClientConfig();
|
||||
const min = config.minClientVersion?.trim();
|
||||
if (min && compareSemver(APP_VERSION, min) < 0) {
|
||||
await Taro.showModal({
|
||||
title: '版本过低',
|
||||
content: '当前小程序版本过低,请更新至最新版本后继续使用。',
|
||||
showCancel: false,
|
||||
confirmText: '我知道了',
|
||||
});
|
||||
}
|
||||
} catch {
|
||||
/* 配置拉取失败不阻塞启动 */
|
||||
}
|
||||
}
|
||||
|
||||
export function setupWeappUpdateManager() {
|
||||
if (process.env.TARO_ENV !== 'weapp') return;
|
||||
if (typeof Taro.getUpdateManager !== 'function') return;
|
||||
|
||||
const manager = Taro.getUpdateManager();
|
||||
manager.onCheckForUpdate((res) => {
|
||||
if (!res.hasUpdate) return;
|
||||
manager.onUpdateReady(() => {
|
||||
void Taro.showModal({
|
||||
title: '更新提示',
|
||||
content: '新版本已准备好,是否重启应用?',
|
||||
confirmText: '立即更新',
|
||||
success: (r) => {
|
||||
if (r.confirm) manager.applyUpdate();
|
||||
},
|
||||
});
|
||||
});
|
||||
manager.onUpdateFailed(() => {
|
||||
void Taro.showModal({
|
||||
title: '更新失败',
|
||||
content: '新版本下载失败,请删除小程序后重新搜索打开。',
|
||||
showCancel: false,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function initClientVersionChecks() {
|
||||
setupWeappUpdateManager();
|
||||
void checkClientVersionGate();
|
||||
}
|
||||
Reference in New Issue
Block a user