package com.doverfuelingsolutions.issp.utils

import com.doverfuelingsolutions.issp.BuildConfig
import kotlin.math.pow

class AppUtil {

    companion object {

        /* 版本相关 */

        /**
         * 获取版本代号
         */
        fun getVersionName(): String = BuildConfig.VERSION_NAME

        /**
         * 获取版本代号
         */
        fun getVersionCode(): Int = BuildConfig.VERSION_CODE

        /**
         * 比较版本大小
         *
         * @param version1 版本代码，形如「1.0.0」。「0001.0.0」等同于「1.0.0」
         * @param version2 形同 version1
         * @return 正返回值说明1>2，负返回值说明1<2，0说明1=2
         */
        fun compareVersion(version1: String, version2: String): Int {
            return calculateVersionNum(version1) - calculateVersionNum(version2)
        }
        /**
         * compareVersion 的辅助函数，用于计算的 version 的版本大小值
         */
        private fun calculateVersionNum(version: String): Int {
            return version
                .split(".")
                .map { it.toInt() }
                .reduceIndexed { index, acc, i ->
                    acc + i * 10.toDouble().pow(index * 2).toInt() * i
                }
        }
    }
}