From 9ab6b38c098f857f2ce0772693142c930e4f9b6d Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期六, 30 三月 2024 10:44:03 +0800
Subject: [PATCH] #

---
 uni_modules/uni-upgrade-center-app/utils/check-update.js |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/uni_modules/uni-upgrade-center-app/utils/check-update.js b/uni_modules/uni-upgrade-center-app/utils/check-update.js
new file mode 100644
index 0000000..3899a18
--- /dev/null
+++ b/uni_modules/uni-upgrade-center-app/utils/check-update.js
@@ -0,0 +1,155 @@
+import callCheckVersion from './call-check-version'
+
+// 鎺ㄨ崘鍐岮pp.vue涓娇鐢�
+const PACKAGE_INFO_KEY = '__package_info__'
+
+export default function() {
+	// #ifdef APP-PLUS
+	return new Promise((resolve, reject) => {
+		callCheckVersion().then(async (e) => {
+			if (!e.result) return;
+			const {
+				code,
+				message,
+				is_silently, // 鏄惁闈欓粯鏇存柊
+				url, // 瀹夎鍖呬笅杞藉湴鍧�
+				platform, // 瀹夎鍖呭钩鍙�
+				type // 瀹夎鍖呯被鍨�
+			} = e.result;
+
+			// 姝ゅ閫昏緫浠呬负瀹炰緥锛屽彲鑷缂栧啓
+			if (code > 0) {
+				// 鑵捐浜戝拰闃块噷浜戜笅杞介摼鎺ヤ笉鍚岋紝闇�瑕佸鐞嗕竴涓嬶紝闃块噷浜戜細鍘熸牱杩斿洖
+				const {
+					fileList
+				} = await uniCloud.getTempFileURL({
+					fileList: [url]
+				});
+				if (fileList[0].tempFileURL)
+					e.result.url = fileList[0].tempFileURL;
+
+				resolve(e)
+
+				// 闈欓粯鏇存柊锛屽彧鏈墂gt鏈�
+				if (is_silently) {
+					uni.downloadFile({
+						url: e.result.url,
+						success: res => {
+							if (res.statusCode == 200) {
+								// 涓嬭浇濂界洿鎺ュ畨瑁咃紝涓嬫鍚姩鐢熸晥
+								plus.runtime.install(res.tempFilePath, {
+									force: false
+								});
+							}
+						}
+					});
+					return;
+				}
+
+				/**
+				 * 鎻愮ず鍗囩骇涓�
+				 * 浣跨敤 uni.showModal
+				 */
+				// return updateUseModal(e.result)
+
+				/**
+				 * 鎻愮ず鍗囩骇浜�
+				 * 瀹樻柟閫傞厤鐨勫崌绾у脊绐楋紝鍙嚜琛屾浛鎹㈣祫婧愰�傞厤UI椋庢牸
+				 */
+				uni.setStorageSync(PACKAGE_INFO_KEY, e.result)
+				uni.navigateTo({
+					url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
+					fail: (err) => {
+						console.error('鏇存柊寮规璺宠浆澶辫触', err)
+						uni.removeStorageSync(PACKAGE_INFO_KEY)
+					}
+				})
+			} else if (code < 0) {
+				// TODO 浜戝嚱鏁版姤閿欏鐞�
+				console.error(message)
+				reject(e)
+			}
+		}).catch(err => {
+			// TODO 浜戝嚱鏁版姤閿欏鐞�
+			console.error(err.message)
+			reject(err)
+		})
+	});
+	// #endif
+}
+
+/**
+ * 浣跨敤 uni.showModal 鍗囩骇
+ */
+function updateUseModal(packageInfo) {
+	const {
+		title, // 鏍囬
+		contents, // 鍗囩骇鍐呭
+		is_mandatory, // 鏄惁寮哄埗鏇存柊
+		url, // 瀹夎鍖呬笅杞藉湴鍧�
+		platform, // 瀹夎鍖呭钩鍙�
+		type // 瀹夎鍖呯被鍨�
+	} = packageInfo;
+
+	let isWGT = type === 'wgt'
+	let isiOS = !isWGT ? platform.includes('iOS') : false;
+	let confirmText = isiOS ? '绔嬪嵆璺宠浆鏇存柊' : '绔嬪嵆涓嬭浇鏇存柊'
+
+	return uni.showModal({
+		title,
+		content: contents,
+		showCancel: !is_mandatory,
+		confirmText,
+		success: res => {
+			if (res.cancel) return;
+
+			// 瀹夎鍖呬笅杞�
+			if (isiOS) {
+				plus.runtime.openURL(url);
+				return;
+			}
+
+			uni.showToast({
+				title: '鍚庡彴涓嬭浇涓�︹��',
+				duration: 1000
+			});
+
+			// wgt 鍜� 瀹夊崜涓嬭浇鏇存柊
+			downloadTask = uni.downloadFile({
+				url,
+				success: res => {
+					if (res.statusCode !== 200) {
+						console.error('涓嬭浇瀹夎鍖呭け璐�', err);
+						return;
+					}
+					// 涓嬭浇濂界洿鎺ュ畨瑁咃紝涓嬫鍚姩鐢熸晥
+					plus.runtime.install(res.tempFilePath, {
+						force: false
+					}, () => {
+						if (is_mandatory) {
+							//鏇存柊瀹岄噸鍚痑pp
+							plus.runtime.restart();
+							return;
+						}
+						uni.showModal({
+							title: '瀹夎鎴愬姛鏄惁閲嶅惎锛�',
+							success: res => {
+								if (res.confirm) {
+									//鏇存柊瀹岄噸鍚痑pp
+									plus.runtime.restart();
+								}
+							}
+						});
+					}, err => {
+						uni.showModal({
+							title: '鏇存柊澶辫触',
+							content: err
+								.message,
+							showCancel: false
+						});
+					});
+				}
+			});
+		}
+	});
+}

--
Gitblit v1.9.1