修改个人信息
This commit is contained in:
@@ -6,16 +6,23 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import android.widget.Toast
|
||||
|
||||
import com.bumptech.glide.Glide
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.bean.UpdateUserInfo
|
||||
import com.example.defenseapplication.bean.UserInfoBean
|
||||
import com.example.defenseapplication.databinding.PersonalProfileActivityBinding
|
||||
import com.example.defenseapplication.utils.RetrofitNetwork
|
||||
import com.example.defenseapplication.view.CustomDialogFragmentText
|
||||
import com.example.defenseapplication.view.PhoneModifyDialogFragment
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
//个人信息
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class PersonalProfileActivity : AppCompatActivity() {
|
||||
private lateinit var binding: PersonalProfileActivityBinding
|
||||
private var userInfo: UserInfoBean? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -25,6 +32,7 @@ class PersonalProfileActivity : AppCompatActivity() {
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
userInfo = intent.getParcelableExtra("userInfo", UserInfoBean::class.java)
|
||||
initView()
|
||||
}
|
||||
|
||||
@@ -33,13 +41,29 @@ class PersonalProfileActivity : AppCompatActivity() {
|
||||
finish()
|
||||
}
|
||||
|
||||
Glide.with(this)
|
||||
.load(R.drawable.img)
|
||||
.circleCrop()
|
||||
.into(binding.ivAvatar)
|
||||
userInfo?.let { info ->
|
||||
info.avatar?.let { avatarUrl ->
|
||||
Glide.with(this)
|
||||
.load(avatarUrl)
|
||||
.circleCrop()
|
||||
.into(binding.ivAvatar)
|
||||
} ?: run {
|
||||
Glide.with(this)
|
||||
.load(R.drawable.img)
|
||||
.circleCrop()
|
||||
.into(binding.ivAvatar)
|
||||
}
|
||||
|
||||
binding.tvNickname.text = getString(R.string.nickname_default)
|
||||
binding.tvPhone.text = "13589898989"
|
||||
binding.tvNickname.text = info.nickName ?: getString(R.string.nickname_default)
|
||||
binding.tvPhone.text = info.phonenumber ?: "13589898989"
|
||||
} ?: run {
|
||||
Glide.with(this)
|
||||
.load(R.drawable.img)
|
||||
.circleCrop()
|
||||
.into(binding.ivAvatar)
|
||||
binding.tvNickname.text = getString(R.string.nickname_default)
|
||||
binding.tvPhone.text = "13589898989"
|
||||
}
|
||||
|
||||
binding.itemNickname.setOnClickListener {
|
||||
showNicknameDialog()
|
||||
@@ -62,22 +86,73 @@ class PersonalProfileActivity : AppCompatActivity() {
|
||||
.setNegativeText("")
|
||||
.setOnConfirmListener { newNickname ->
|
||||
if (newNickname.isNotBlank()) {
|
||||
binding.tvNickname.text = newNickname
|
||||
Toast.makeText(this, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
|
||||
updateNickname(newNickname)
|
||||
}
|
||||
}
|
||||
dialog.show(supportFragmentManager, "nickname_dialog")
|
||||
}
|
||||
|
||||
private fun updateNickname(newNickname: String) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
try {
|
||||
val request = UpdateUserInfo(
|
||||
userId = userInfo?.userId,
|
||||
nickName = newNickname
|
||||
)
|
||||
val response = RetrofitNetwork.getNetworkService().updateUserInfo(request)
|
||||
withContext(Dispatchers.Main) {
|
||||
if (response.code == 200) {
|
||||
binding.tvNickname.text = newNickname
|
||||
userInfo = userInfo?.copy(nickName = newNickname)
|
||||
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_failed), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(this@PersonalProfileActivity, getString(R.string.network_error), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showPhoneDialog() {
|
||||
val dialog = PhoneModifyDialogFragment()
|
||||
.setTitle(getString(R.string.modify_phone))
|
||||
.setNegativeText(getString(R.string.cancel))
|
||||
.setPositiveText(getString(R.string.verify_and_bind))
|
||||
.setOnConfirmListener { phone, code ->
|
||||
binding.tvPhone.text = phone
|
||||
Toast.makeText(this, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
|
||||
updatePhone(phone, code)
|
||||
}
|
||||
dialog.show(supportFragmentManager, "phone_dialog")
|
||||
}
|
||||
|
||||
private fun updatePhone(phone: String, code: String) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
try {
|
||||
val request = UpdateUserInfo(
|
||||
userId = userInfo?.userId,
|
||||
phonenumber = phone,
|
||||
smsCoode = code
|
||||
)
|
||||
val response = RetrofitNetwork.getNetworkService().updateUserInfo(request)
|
||||
withContext(Dispatchers.Main) {
|
||||
if (response.code == 200) {
|
||||
binding.tvPhone.text = phone
|
||||
userInfo = userInfo?.copy(phonenumber = phone)
|
||||
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_failed), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(this@PersonalProfileActivity, getString(R.string.network_error), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user