import service from "@/common/service.js"
/**
 * @description: 版本判断以及更新逻辑
 * @param {Object} obj
 * @author: xuhao
 */
export async function update() {
	await inspectApk()
	await inspectWgt()
}
// 检查是否有apk包更新
function inspectApk() {
	return new Promise((req, err) => {
		let version = plus.runtime.version
		// let version = '1.0.0'
		console.log('version', version)
		service.P_post('/version/index', {
			client: uni.getSystemInfoSync().platform,
			version: version
		}).then(res => {
			if(res.msg.version) {
				uni.navigateTo({
					url: '/pages/update/update'
				})
				err()
			} else {
				req()
			}
		})
	})
}
// 检查是否有wgt包更新
function inspectWgt() {
	return new Promise((req, err) => {
		plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
			let version = widgetInfo.version
			console.log('version', version)
			service.P_post('/version/index', {
				client: uni.getSystemInfoSync().platform,
				version: version
			}).then(res => {
				if(res.msg.version) {
					wgtUpdate(res.msg.url)
					err()
				} else {
					req()
				}
			})
		})
	})
}
/**
 *   热更新逻辑
 */
function wgtUpdate(url) {
	// 检查是否正在更新
	if(uni.getStorageSync('updatingInProgress')){
		return
	}
	uni.setStorageSync('updatingInProgress', true)
	let urlSystem = uni.getStorageSync('url')
	const downloadTask = uni.downloadFile({
		url: urlSystem + '/app/renew/download?filename=' + url,
		success: (downloadResult) => {
			if (downloadResult.statusCode === 200) {
				plus.runtime.install(downloadResult.tempFilePath, {
					force: true
				}, function() {
					console.log('install success...');
					plus.runtime.restart();
				}, function(e) {
					console.error('install fail...', e);
				},);
			}
		},
		complete: () => {
			uni.removeStorageSync('updatingInProgress')
		}
	});
	var showLoading = plus.nativeUI.showWaiting("正在更新", {
		back: "none"
	});
	downloadTask.onProgressUpdate((res) => {
		showLoading.setTitle("正在更新" + res.progress + "%  ");
		if (res.progress == 100) {
			plus.nativeUI.closeWaiting();
		}
	})
}