diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 9252cac..58d5e63 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import com.casic.smarttube.BuildConfig import com.casic.smarttube.R import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel @@ -17,7 +18,8 @@ import top.zibin.luban.OnCompressListener import java.io.File import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale import java.util.regex.Pattern /** @@ -156,4 +158,30 @@ } val pattern = Pattern.compile("[0-9]*") return pattern.matcher(this).matches() +} + +//val currentVersion = "1.0.3" +//val serverVersion = "1.0.1" +fun String.compareVersion(): Boolean { + return try { + val versionParts = this.split(".").map { it.trim() } + if (versionParts.size < 3) { + throw IllegalArgumentException("Version string must have at least three parts") + } + + val version = versionParts.mapIndexed { index, part -> + if (part.isEmpty()) { + throw NumberFormatException("Empty version part at index $index") + } + part.toInt() + } + + val versionCode = version.getOrElse(0) { 0 } * 100 + + version.getOrElse(1) { 0 } * 10 + + version.getOrElse(2) { 0 } + + versionCode <= BuildConfig.VERSION_CODE + } catch (e: Exception) { + false + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 9252cac..58d5e63 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import com.casic.smarttube.BuildConfig import com.casic.smarttube.R import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel @@ -17,7 +18,8 @@ import top.zibin.luban.OnCompressListener import java.io.File import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale import java.util.regex.Pattern /** @@ -156,4 +158,30 @@ } val pattern = Pattern.compile("[0-9]*") return pattern.matcher(this).matches() +} + +//val currentVersion = "1.0.3" +//val serverVersion = "1.0.1" +fun String.compareVersion(): Boolean { + return try { + val versionParts = this.split(".").map { it.trim() } + if (versionParts.size < 3) { + throw IllegalArgumentException("Version string must have at least three parts") + } + + val version = versionParts.mapIndexed { index, part -> + if (part.isEmpty()) { + throw NumberFormatException("Empty version part at index $index") + } + part.toInt() + } + + val versionCode = version.getOrElse(0) { 0 } * 100 + + version.getOrElse(1) { 0 } * 10 + + version.getOrElse(2) { 0 } + + versionCode <= BuildConfig.VERSION_CODE + } catch (e: Exception) { + false + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index 9be184e..26c4632 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -7,8 +7,8 @@ import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider -import com.casic.smarttube.BuildConfig import com.casic.smarttube.databinding.FragmentMineBinding +import com.casic.smarttube.extensions.compareVersion import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper import com.casic.smarttube.utils.FileDownloadManager @@ -174,7 +174,7 @@ } versionViewModel.versionResultModel.observe(this) { - if (BuildConfig.VERSION_NAME == it.version) { + if (it.version.compareVersion()) { "已是最新版本,无需更新".show(requireContext()) } else { AlertControlDialog.Builder().setContext(requireContext()).setTitle("提示") @@ -206,6 +206,7 @@ } override fun onResume() { + super.onResume() val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { userData = Gson().fromJson( @@ -215,19 +216,9 @@ } //缓存 binding.cacheSizeView.text = collectApplicationCache().formatFileSize() - super.onResume() } private fun updateUserInfo() { - //设置头像,圆形,暂时是默认的 -// val roundDrawable = -// BitmapFactory.decodeResource(requireContext().resources, R.mipmap.login_casic) -// .createRoundDrawable( -// requireContext(), -// 3f.dp2px(requireContext()), -// R.color.mainThemeColor.convertColor(requireContext()) -// ) -// userImageView.setImageDrawable(roundDrawable) binding.userNameView.text = userData.name binding.userPhoneView.text = String.format("电话:${userData.phone}") binding.userDeptView.text = String.format("部门:${userData.deptName}") diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 9252cac..58d5e63 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import com.casic.smarttube.BuildConfig import com.casic.smarttube.R import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel @@ -17,7 +18,8 @@ import top.zibin.luban.OnCompressListener import java.io.File import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale import java.util.regex.Pattern /** @@ -156,4 +158,30 @@ } val pattern = Pattern.compile("[0-9]*") return pattern.matcher(this).matches() +} + +//val currentVersion = "1.0.3" +//val serverVersion = "1.0.1" +fun String.compareVersion(): Boolean { + return try { + val versionParts = this.split(".").map { it.trim() } + if (versionParts.size < 3) { + throw IllegalArgumentException("Version string must have at least three parts") + } + + val version = versionParts.mapIndexed { index, part -> + if (part.isEmpty()) { + throw NumberFormatException("Empty version part at index $index") + } + part.toInt() + } + + val versionCode = version.getOrElse(0) { 0 } * 100 + + version.getOrElse(1) { 0 } * 10 + + version.getOrElse(2) { 0 } + + versionCode <= BuildConfig.VERSION_CODE + } catch (e: Exception) { + false + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index 9be184e..26c4632 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -7,8 +7,8 @@ import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider -import com.casic.smarttube.BuildConfig import com.casic.smarttube.databinding.FragmentMineBinding +import com.casic.smarttube.extensions.compareVersion import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper import com.casic.smarttube.utils.FileDownloadManager @@ -174,7 +174,7 @@ } versionViewModel.versionResultModel.observe(this) { - if (BuildConfig.VERSION_NAME == it.version) { + if (it.version.compareVersion()) { "已是最新版本,无需更新".show(requireContext()) } else { AlertControlDialog.Builder().setContext(requireContext()).setTitle("提示") @@ -206,6 +206,7 @@ } override fun onResume() { + super.onResume() val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { userData = Gson().fromJson( @@ -215,19 +216,9 @@ } //缓存 binding.cacheSizeView.text = collectApplicationCache().formatFileSize() - super.onResume() } private fun updateUserInfo() { - //设置头像,圆形,暂时是默认的 -// val roundDrawable = -// BitmapFactory.decodeResource(requireContext().resources, R.mipmap.login_casic) -// .createRoundDrawable( -// requireContext(), -// 3f.dp2px(requireContext()), -// R.color.mainThemeColor.convertColor(requireContext()) -// ) -// userImageView.setImageDrawable(roundDrawable) binding.userNameView.text = userData.name binding.userPhoneView.text = String.format("电话:${userData.phone}") binding.userDeptView.text = String.format("部门:${userData.deptName}") diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 54cac79..7f16ddc 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -68,5 +68,4 @@ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" - const val APP_AUTHORITY = "com.casic.smarttube.fileprovider" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 9252cac..58d5e63 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import com.casic.smarttube.BuildConfig import com.casic.smarttube.R import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel @@ -17,7 +18,8 @@ import top.zibin.luban.OnCompressListener import java.io.File import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale import java.util.regex.Pattern /** @@ -156,4 +158,30 @@ } val pattern = Pattern.compile("[0-9]*") return pattern.matcher(this).matches() +} + +//val currentVersion = "1.0.3" +//val serverVersion = "1.0.1" +fun String.compareVersion(): Boolean { + return try { + val versionParts = this.split(".").map { it.trim() } + if (versionParts.size < 3) { + throw IllegalArgumentException("Version string must have at least three parts") + } + + val version = versionParts.mapIndexed { index, part -> + if (part.isEmpty()) { + throw NumberFormatException("Empty version part at index $index") + } + part.toInt() + } + + val versionCode = version.getOrElse(0) { 0 } * 100 + + version.getOrElse(1) { 0 } * 10 + + version.getOrElse(2) { 0 } + + versionCode <= BuildConfig.VERSION_CODE + } catch (e: Exception) { + false + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index 9be184e..26c4632 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -7,8 +7,8 @@ import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider -import com.casic.smarttube.BuildConfig import com.casic.smarttube.databinding.FragmentMineBinding +import com.casic.smarttube.extensions.compareVersion import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper import com.casic.smarttube.utils.FileDownloadManager @@ -174,7 +174,7 @@ } versionViewModel.versionResultModel.observe(this) { - if (BuildConfig.VERSION_NAME == it.version) { + if (it.version.compareVersion()) { "已是最新版本,无需更新".show(requireContext()) } else { AlertControlDialog.Builder().setContext(requireContext()).setTitle("提示") @@ -206,6 +206,7 @@ } override fun onResume() { + super.onResume() val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { userData = Gson().fromJson( @@ -215,19 +216,9 @@ } //缓存 binding.cacheSizeView.text = collectApplicationCache().formatFileSize() - super.onResume() } private fun updateUserInfo() { - //设置头像,圆形,暂时是默认的 -// val roundDrawable = -// BitmapFactory.decodeResource(requireContext().resources, R.mipmap.login_casic) -// .createRoundDrawable( -// requireContext(), -// 3f.dp2px(requireContext()), -// R.color.mainThemeColor.convertColor(requireContext()) -// ) -// userImageView.setImageDrawable(roundDrawable) binding.userNameView.text = userData.name binding.userPhoneView.text = String.format("电话:${userData.phone}") binding.userDeptView.text = String.format("部门:${userData.deptName}") diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 54cac79..7f16ddc 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -68,5 +68,4 @@ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" - const val APP_AUTHORITY = "com.casic.smarttube.fileprovider" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/smarttube/view/SplashScreenActivity.kt index baf5222..7a8c8c8 100644 --- a/app/src/main/java/com/casic/smarttube/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/SplashScreenActivity.kt @@ -14,26 +14,6 @@ class SplashScreenActivity : KotlinBaseActivity() { private lateinit var userDetailViewModel: UserViewModel - private val countDownTimer = object : CountDownTimer(1000, 500) { - override fun onFinish() { - /** - * 获取token之后保存用户信息 - * */ - userDetailViewModel.obtainUserDetail() - userDetailViewModel.userDetailModel.observe(this@SplashScreenActivity) { - if (it.code == 200) { - navigatePageTo() - } else { - navigatePageTo() - } - finish() - } - } - - override fun onTick(millisUntilFinished: Long) { - - } - } override fun initViewBinding(): ActivitySplashBinding { return ActivitySplashBinding.inflate(layoutInflater) @@ -44,7 +24,15 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { - userDetailViewModel = ViewModelProvider(this).get(UserViewModel::class.java) + userDetailViewModel = ViewModelProvider(this)[UserViewModel::class.java] + userDetailViewModel.userDetailModel.observe(this) { + if (it.code == 200) { + navigatePageTo() + } else { + navigatePageTo() + } + finish() + } } override fun observeRequestState() { @@ -54,4 +42,14 @@ override fun initEvent() { countDownTimer.start() } + + private val countDownTimer = object : CountDownTimer(1000, 500) { + override fun onFinish() { + userDetailViewModel.obtainUserDetail() + } + + override fun onTick(millisUntilFinished: Long) { + + } + } } \ No newline at end of file