diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e493fc0..a91f23f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,6 +55,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e493fc0..a91f23f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,6 +55,7 @@
+
diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
index dab1cb9..107f919 100644
--- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
+++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
@@ -14,8 +14,8 @@
import com.casic.smart.town.sanxi.util.AuthenticationHelper
import com.casic.smart.town.sanxi.util.LoadingDialogHub
import com.casic.smart.town.sanxi.util.LocaleConstant
-import com.casic.smart.town.sanxi.util.RSAUtils
import com.casic.smart.town.sanxi.view.AboutUsActivity
+import com.casic.smart.town.sanxi.view.ChangePasswordActivity
import com.casic.smart.town.sanxi.view.LoginActivity
import com.casic.smart.town.sanxi.view.UpdateDataActivity
import com.casic.smart.town.sanxi.vm.LoginViewModel
@@ -30,10 +30,8 @@
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.vm.LoadState
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
-import com.pengxh.kt.lite.widget.dialog.ChangePasswordDialog
import kotlinx.android.synthetic.main.fragment_more.*
import java.io.File
-import java.nio.charset.StandardCharsets
class MorePageFragment : KotlinBaseFragment() {
@@ -68,20 +66,6 @@
}
override fun observeRequestState() {
- userViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后")
- is LoadState.Success -> {
- "修改成功,请重新登录".show(requireContext())
- LoadingDialogHub.dismiss()
- AuthenticationHelper.removeToken()
- requireContext().navigatePageTo()
- PageNavigationManager.finishAllActivity()
- }
- else -> LoadingDialogHub.dismiss()
- }
- })
-
versionViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后")
@@ -105,24 +89,7 @@
}
changePwdLayout.setOnClickListener {
- ChangePasswordDialog.Builder()
- .setContext(requireContext())
- .setOnDialogButtonClickListener(object :
- ChangePasswordDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(oldPwd: String, newPwd: String) {
- val publicKey =
- RSAUtils.keyStrToPublicKey(AuthenticationHelper.publicKey)!!
- val oldPassKey = RSAUtils.encryptDataByPublicKey(
- oldPwd.toByteArray(StandardCharsets.UTF_8),
- publicKey
- )
- val newPassKey = RSAUtils.encryptDataByPublicKey(
- newPwd.toByteArray(StandardCharsets.UTF_8),
- publicKey
- )
- userViewModel.changePassword(oldPassKey, newPassKey)
- }
- }).build().show()
+ requireContext().navigatePageTo()
}
aboutUsLayout.setOnClickListener {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e493fc0..a91f23f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,6 +55,7 @@
+
diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
index dab1cb9..107f919 100644
--- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
+++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
@@ -14,8 +14,8 @@
import com.casic.smart.town.sanxi.util.AuthenticationHelper
import com.casic.smart.town.sanxi.util.LoadingDialogHub
import com.casic.smart.town.sanxi.util.LocaleConstant
-import com.casic.smart.town.sanxi.util.RSAUtils
import com.casic.smart.town.sanxi.view.AboutUsActivity
+import com.casic.smart.town.sanxi.view.ChangePasswordActivity
import com.casic.smart.town.sanxi.view.LoginActivity
import com.casic.smart.town.sanxi.view.UpdateDataActivity
import com.casic.smart.town.sanxi.vm.LoginViewModel
@@ -30,10 +30,8 @@
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.vm.LoadState
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
-import com.pengxh.kt.lite.widget.dialog.ChangePasswordDialog
import kotlinx.android.synthetic.main.fragment_more.*
import java.io.File
-import java.nio.charset.StandardCharsets
class MorePageFragment : KotlinBaseFragment() {
@@ -68,20 +66,6 @@
}
override fun observeRequestState() {
- userViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后")
- is LoadState.Success -> {
- "修改成功,请重新登录".show(requireContext())
- LoadingDialogHub.dismiss()
- AuthenticationHelper.removeToken()
- requireContext().navigatePageTo()
- PageNavigationManager.finishAllActivity()
- }
- else -> LoadingDialogHub.dismiss()
- }
- })
-
versionViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后")
@@ -105,24 +89,7 @@
}
changePwdLayout.setOnClickListener {
- ChangePasswordDialog.Builder()
- .setContext(requireContext())
- .setOnDialogButtonClickListener(object :
- ChangePasswordDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(oldPwd: String, newPwd: String) {
- val publicKey =
- RSAUtils.keyStrToPublicKey(AuthenticationHelper.publicKey)!!
- val oldPassKey = RSAUtils.encryptDataByPublicKey(
- oldPwd.toByteArray(StandardCharsets.UTF_8),
- publicKey
- )
- val newPassKey = RSAUtils.encryptDataByPublicKey(
- newPwd.toByteArray(StandardCharsets.UTF_8),
- publicKey
- )
- userViewModel.changePassword(oldPassKey, newPassKey)
- }
- }).build().show()
+ requireContext().navigatePageTo()
}
aboutUsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt
new file mode 100644
index 0000000..6d72568
--- /dev/null
+++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt
@@ -0,0 +1,103 @@
+package com.casic.smart.town.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smart.town.sanxi.R
+import com.casic.smart.town.sanxi.util.AuthenticationHelper
+import com.casic.smart.town.sanxi.util.LoadingDialogHub
+import com.casic.smart.town.sanxi.util.RSAUtils
+import com.casic.smart.town.sanxi.vm.UserViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.isLetterAndDigit
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_change_pwd.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.nio.charset.StandardCharsets
+
+class ChangePasswordActivity : KotlinBaseActivity() {
+
+ private lateinit var userViewModel: UserViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_change_pwd
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+
+ titleView.text = "修改密码"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
+ }
+
+ override fun observeRequestState() {
+ userViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后")
+ is LoadState.Success -> {
+ LoadingDialogHub.dismiss()
+ AuthenticationHelper.removeToken()
+ this.navigatePageTo()
+ PageNavigationManager.finishAllActivity()
+ }
+ else -> LoadingDialogHub.dismiss()
+ }
+ })
+ }
+
+ override fun initEvent() {
+ submitButton.setOnClickListener {
+ /**
+ * isEmpty 认为空格(无论单空格还是多空格)都是不是空.
+ * isBlank 认为空格,换行符号(\n),tab(\t)都是空.
+ * */
+ val oldPassword: String = oldPasswordView.text.toString().trim()
+ if (oldPassword.isBlank()) {
+ "请先输入原密码".show(this)
+ return@setOnClickListener
+ }
+ val newPassword: String = newPasswordView.text.toString().trim()
+ if (newPassword.isBlank()) {
+ "请先输入原密码".show(this)
+ return@setOnClickListener
+ }
+ val repeatPassword: String = repeatPasswordView.text.toString().trim()
+ if (repeatPassword.isBlank()) {
+ "请再次输入新密码".show(this)
+ return@setOnClickListener
+ }
+ if (newPassword != repeatPassword) {
+ "新密码和确认密码输入不一致,请重新输入".show(this)
+ return@setOnClickListener
+ }
+ if (newPassword.length < 8 || newPassword.length > 16) {
+ "新密码长度不正确,请重新输入".show(this)
+ return@setOnClickListener
+ }
+ if (!newPassword.isLetterAndDigit()) {
+ "新密码请输入8-16位的数字字母组合".show(this)
+ return@setOnClickListener
+ }
+ //数据校验OK,可以修改密码
+ val publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.publicKey)!!
+ val oldPassKey = RSAUtils.encryptDataByPublicKey(
+ oldPassword.toByteArray(StandardCharsets.UTF_8),
+ publicKey
+ )
+ val newPassKey = RSAUtils.encryptDataByPublicKey(
+ newPassword.toByteArray(StandardCharsets.UTF_8),
+ publicKey
+ )
+ userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e493fc0..a91f23f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,6 +55,7 @@
+
diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
index dab1cb9..107f919 100644
--- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
+++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt
@@ -14,8 +14,8 @@
import com.casic.smart.town.sanxi.util.AuthenticationHelper
import com.casic.smart.town.sanxi.util.LoadingDialogHub
import com.casic.smart.town.sanxi.util.LocaleConstant
-import com.casic.smart.town.sanxi.util.RSAUtils
import com.casic.smart.town.sanxi.view.AboutUsActivity
+import com.casic.smart.town.sanxi.view.ChangePasswordActivity
import com.casic.smart.town.sanxi.view.LoginActivity
import com.casic.smart.town.sanxi.view.UpdateDataActivity
import com.casic.smart.town.sanxi.vm.LoginViewModel
@@ -30,10 +30,8 @@
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.vm.LoadState
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
-import com.pengxh.kt.lite.widget.dialog.ChangePasswordDialog
import kotlinx.android.synthetic.main.fragment_more.*
import java.io.File
-import java.nio.charset.StandardCharsets
class MorePageFragment : KotlinBaseFragment() {
@@ -68,20 +66,6 @@
}
override fun observeRequestState() {
- userViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后")
- is LoadState.Success -> {
- "修改成功,请重新登录".show(requireContext())
- LoadingDialogHub.dismiss()
- AuthenticationHelper.removeToken()
- requireContext().navigatePageTo()
- PageNavigationManager.finishAllActivity()
- }
- else -> LoadingDialogHub.dismiss()
- }
- })
-
versionViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后")
@@ -105,24 +89,7 @@
}
changePwdLayout.setOnClickListener {
- ChangePasswordDialog.Builder()
- .setContext(requireContext())
- .setOnDialogButtonClickListener(object :
- ChangePasswordDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(oldPwd: String, newPwd: String) {
- val publicKey =
- RSAUtils.keyStrToPublicKey(AuthenticationHelper.publicKey)!!
- val oldPassKey = RSAUtils.encryptDataByPublicKey(
- oldPwd.toByteArray(StandardCharsets.UTF_8),
- publicKey
- )
- val newPassKey = RSAUtils.encryptDataByPublicKey(
- newPwd.toByteArray(StandardCharsets.UTF_8),
- publicKey
- )
- userViewModel.changePassword(oldPassKey, newPassKey)
- }
- }).build().show()
+ requireContext().navigatePageTo()
}
aboutUsLayout.setOnClickListener {
diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt
new file mode 100644
index 0000000..6d72568
--- /dev/null
+++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt
@@ -0,0 +1,103 @@
+package com.casic.smart.town.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smart.town.sanxi.R
+import com.casic.smart.town.sanxi.util.AuthenticationHelper
+import com.casic.smart.town.sanxi.util.LoadingDialogHub
+import com.casic.smart.town.sanxi.util.RSAUtils
+import com.casic.smart.town.sanxi.vm.UserViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.isLetterAndDigit
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_change_pwd.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.nio.charset.StandardCharsets
+
+class ChangePasswordActivity : KotlinBaseActivity() {
+
+ private lateinit var userViewModel: UserViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_change_pwd
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+
+ titleView.text = "修改密码"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
+ }
+
+ override fun observeRequestState() {
+ userViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后")
+ is LoadState.Success -> {
+ LoadingDialogHub.dismiss()
+ AuthenticationHelper.removeToken()
+ this.navigatePageTo()
+ PageNavigationManager.finishAllActivity()
+ }
+ else -> LoadingDialogHub.dismiss()
+ }
+ })
+ }
+
+ override fun initEvent() {
+ submitButton.setOnClickListener {
+ /**
+ * isEmpty 认为空格(无论单空格还是多空格)都是不是空.
+ * isBlank 认为空格,换行符号(\n),tab(\t)都是空.
+ * */
+ val oldPassword: String = oldPasswordView.text.toString().trim()
+ if (oldPassword.isBlank()) {
+ "请先输入原密码".show(this)
+ return@setOnClickListener
+ }
+ val newPassword: String = newPasswordView.text.toString().trim()
+ if (newPassword.isBlank()) {
+ "请先输入原密码".show(this)
+ return@setOnClickListener
+ }
+ val repeatPassword: String = repeatPasswordView.text.toString().trim()
+ if (repeatPassword.isBlank()) {
+ "请再次输入新密码".show(this)
+ return@setOnClickListener
+ }
+ if (newPassword != repeatPassword) {
+ "新密码和确认密码输入不一致,请重新输入".show(this)
+ return@setOnClickListener
+ }
+ if (newPassword.length < 8 || newPassword.length > 16) {
+ "新密码长度不正确,请重新输入".show(this)
+ return@setOnClickListener
+ }
+ if (!newPassword.isLetterAndDigit()) {
+ "新密码请输入8-16位的数字字母组合".show(this)
+ return@setOnClickListener
+ }
+ //数据校验OK,可以修改密码
+ val publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.publicKey)!!
+ val oldPassKey = RSAUtils.encryptDataByPublicKey(
+ oldPassword.toByteArray(StandardCharsets.UTF_8),
+ publicKey
+ )
+ val newPassKey = RSAUtils.encryptDataByPublicKey(
+ newPassword.toByteArray(StandardCharsets.UTF_8),
+ publicKey
+ )
+ userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_change_pwd.xml b/app/src/main/res/layout/activity_change_pwd.xml
new file mode 100644
index 0000000..5bc4d0f
--- /dev/null
+++ b/app/src/main/res/layout/activity_change_pwd.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file