/**
 * 系统更新 - 后续版本更新
 **/
import Vue from 'vue';

import { selectVersion } from '@/common/request/apis/index'
// import { getappdownload } from '@/common/request/apis/h5'
import { compareVersion } from '@/common/utils/app-update-check';

export default {
	namespaced: true,
	// 储存数据
	state: {
		update: uni.getStorageSync("update") || false,
		downloadApkParams: uni.getStorageSync("downloadApkParams") || {},
		data: {},
		link: {},
		download: {
			path: null,
			start: false,
			install: false,
			progress: 0,
			totalBytesWritten: 0,
			totalBytesExpectedToWrite: 0,
		},
		task: null,
		isUpdate:false
	},
	// 修改数据
	mutations: {
		edit(state, {data, index}){
			state[index] = data;
		},
		// 检查更新
		setUpdate(state, data) {
			state.update = data;
			uni.setStorageSync('update', data);
		},	
		setDownloadApkParams(state, data) {
			state.downloadApkParams = data;
			uni.setStorageSync('downloadApkParams', data);
		},
	},
	actions: {
		async update({commit, dispatch}, type) {
			// #ifdef MP
			const mp = uni.getUpdateManager();
			// 请求完新版本信息的回调
			mp.onCheckForUpdate((res) => {
				console.log(res.hasUpdate)
				if (!res.hasUpdate&&type) uni.$u.toast('已是最新版本，无需更新！')
			});
			mp.onUpdateReady((res) => {
				// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
				uni.showModal({
					title: '更新提示',
					content: '新版本已经准备好，是否重启应用？',
					success(show) {
						if (show.confirm) {
							mp.applyUpdate();
						}
					}
				});
			});
			mp.onUpdateFailed((res) => {
				console.log('新的版本下载失败')
			});
			// #endif
			
			// #ifdef APP-PLUS
			const system_info = uni.getSystemInfoSync();
			console.log('system=================',system_info)
			console.log('appVersion================',system_info.appVersion)
			let params = {
				os: system_info.platform //本机设备操作系统  （android || ios）
			};
			if (params.os != 'ios' && params.os != 'android') false; //如果不是安卓或ios 返回false
			selectVersion()
			.then(async res=>{
				// let need_update = await compareVersion(system_info.appVersion, res.data.version); // 检查是否需要升级（对比版本号）
				if(system_info.appVersion!=res.data.version) {
					commit('setUpdate',true)
					commit('setDownloadApkParams',res.data)
					// console.log(state.update,'res')
				}else {
					commit('setUpdate',false)
				}
			})
			//这里自行请求API获取版本信息 建议传入操作系统标识，返回本机对应的操作系统最新版本信息，也就是安卓的返回就是安卓的版本信息  ios返回就是ios的版本信息
			// getappdownload()
			// 	.then(res => {
			// 		let versionInfo = res.data.version;
			// 		if (versionInfo&&versionInfo.downloadurl) {
			// 			let update_info = {
			// 				version: params.os == 'ios' ? versionInfo.newversion : versionInfo.newversion, //线上版本
			// 				now_url: params.os == 'ios' ? versionInfo.downloadurl : versionInfo.downloadurl, //更新链接
			// 				silent: versionInfo.silent ? versionInfo.silent : 0, //是否是静默更新
			// 				force: versionInfo.enforce, //是否是强制更新
			// 				net_check: versionInfo.net_check ? versionInfo.net_check : 1, //非WIfi是否提示
			// 				note: versionInfo.content //更新内容
			// 			};
			// 			checkUpdate(update_info, type).then(res => {
			// 				if (res.msg) {
			// 					if(type){
			// 						uni.$u.toast(res.msg)
			// 					}
			// 				}
			// 			}); ///检查更新
			// 		}
			// 		//checkUpdate 这个方法会做什么？：线上版本号 与 本地版本号做对比 ，如果需要更新  根据静默，强制、wifi等信息执行静默更新或跳转到升级页面
			// 		//跳转升级页面的前提是，需要新建并在pages.json中配置升级页面，配置方法请查看插件详情
			// 	})
			// 	.catch(err => {
			// 		uni.$u.toast(err.msg);
			// 	});
			// #endif
		},
	}
};
