import {getVersion} from "../api";

const updateVersion = {
    data() {
        return {
            updateVersion: {
                modalShow: false,
                showConfirmButton: false,
                showCancelButton: false,
                confirmText: '',
                cancelText: '',
                modalContent: '',
                confirmType: '',
                newVersionUrl: '',
                downloadCompleteTemporaryPath: '',
            }
        }
    },
    methods: {
        async fnUpdateVersion(toast) {
            // #ifdef APP-PLUS
            let resData = await getVersion()
            if (resData.pd) {
                if (plus.runtime.version != resData.pd.VERSION) {
                    this.updateVersion.newVersionUrl = this.$filePath + resData.pd.FILEURL
                    uni.getNetworkType({
                        success: ({
                                      networkType
                                  }) => {
                            if (networkType === 'wifi') {
                                this.updateVersion.modalContent = '发现新版本,是否更新?为了更好的体验,请更新到最新版本。'
                            } else {
                                this.updateVersion.modalContent =
                                    '发现新版本,检查到您当前使用的是移动网络,是否更新?更新时请注意流量消耗。为了更好的体验,请更新到最新版本。'
                            }
                            this.updateVersion.confirmType = 'download'
                            this.updateVersion.confirmText = '立即更新'
                            this.updateVersion.cancelText = '稍后更新'
                            this.updateVersion.showConfirmButton = true;
                            this.updateVersion.showCancelButton = true;
                            this.updateVersion.modalShow = true;
                            uni.hideTabBar({
                                animation: true
                            })
                        }
                    })
                } else {
                    if(toast !== false){
                        uni.showToast({
                            title: '当前已是最新版本,当前版本号:' + plus.runtime.version,
                            icon: 'none'
                        })
                    }
                }
            } else {
                if(toast !== false){
                    uni.showToast({
                        title: '当前已是最新版本,当前版本号:' + plus.runtime.version,
                        icon: 'none'
                    })
                }
            }

            // #endif
        },
        modalConfirm() {
            this.updateVersion.confirmType === 'download' ? this.downloadNewVersion() : this.installNewVersion()
        },
        modalCancel() {
            this.updateVersion.modalShow = false
            uni.showTabBar({
                animation: true
            })
        },
        downloadNewVersion() {
            this.updateVersion.showConfirmButton = false;
            this.updateVersion.showCancelButton = false;
            this.updateVersion.modalContent = '正在下载新版本,请稍后...'
            const downloadTask = uni.downloadFile({
                url: this.updateVersion.newVersionUrl,
                success: (res) => {
                    this.updateVersion.downloadCompleteTemporaryPath = res.tempFilePath
                }
            });
            downloadTask.onProgressUpdate((res) => {
                this.updateVersion.modalContent = `正在下载新版本,请稍后...<br>已经下载${res.progress}%`
                if (res.progress === 100) {
                    this.updateVersion.showConfirmButton = true;
                    this.updateVersion.confirmType = 'install'
                    this.updateVersion.confirmText = '立即安装'
                    this.updateVersion.modalContent = '下载成功,点击立即安装进行安装。'
                }
            });
        },
        installNewVersion() {
            plus.runtime.install(
                this.updateVersion.downloadCompleteTemporaryPath, {
                    force: true
                },
                function (res) {
                    uni.showTabBar({
                        animation: true
                    })
                    plus.runtime.restart();
                }
            );
        },
    }
}
export default updateVersion