게시판 프로젝트
회원정보 수정
사용자 정보를 수정하는 메서드 작성
suspend fun updateUserData(userModel: UserModel, isChangePassword:Boolean){
val job1 = CoroutineScope(Dispatchers.IO).launch {
val collectionReference = Firebase.firestore.collection("UserData")
val query = collectionReference.whereEqualTo("userIdx", userModel.userIdx).get().await()
val map = mutableMapOf<String, Any?>()
map["userNickName"] = userModel.userNickName
map["userAge"] = userModel.userAge
map["userGender"] = userModel.userGender
map["userHobby1"] = userModel.userHobby1
map["userHobby2"] = userModel.userHobby2
map["userHobby3"] = userModel.userHobby3
map["userHobby4"] = userModel.userHobby4
map["userHobby5"] = userModel.userHobby5
map["userHobby6"] = userModel.userHobby6
if(isChangePassword){
map["userPw"] = userModel.userPw
}
query.documents[0].reference.update(map)
}
job1.join()
}
성별값을 반환하는 메서드
fun gettingGender() = when(toggleModifyUserInfoGender.value){
R.id.buttonModifyUserInfoMale -> Gender.MALE.num
R.id.buttonModifyUserInfoFemale -> Gender.FEMALE.num
else -> 0
}
사용자 정보를 수정하는 메서드
inflateMenu(R.menu.menu_modify_user)
setOnMenuItemClickListener {
when(it.itemId){
R.id.menuItemModifyUserReset -> {
settingInputForm()
}
R.id.menuItemModifyUserDone -> {
val chk = checkInputForm()
if(chk == true){
updateUserData()
}
}
}
true
}
fun updateUserData(){
val userNickName = modifyUserViewModel.textFieldModifyUserInfoNickName.value!!
val userAge = modifyUserViewModel.textFieldModifyUserInfoAge.value!!.toInt()
val userGender = modifyUserViewModel.gettingGender()
val userHobby1 = modifyUserViewModel.checkBoxModifyUserInfoHobby1.value!!
val userHobby2 = modifyUserViewModel.checkBoxModifyUserInfoHobby2.value!!
val userHobby3 = modifyUserViewModel.checkBoxModifyUserInfoHobby3.value!!
val userHobby4 = modifyUserViewModel.checkBoxModifyUserInfoHobby4.value!!
val userHobby5 = modifyUserViewModel.checkBoxModifyUserInfoHobby5.value!!
val userHobby6 = modifyUserViewModel.checkBoxModifyUserInfoHobby6.value!!
val userPw = modifyUserViewModel.textFieldModifyUserInfoPw.value!!
val userModel = UserModel(
contentActivity.loginUserIdx,
"",
userPw,
userNickName,
userAge,
userGender,
userHobby1, userHobby2, userHobby3, userHobby4, userHobby5, userHobby6,
0
)
val chk = userPw.isNotEmpty()
CoroutineScope(Dispatchers.Main).launch {
UserDao.updateUserData(userModel, chk)
Snackbar.make(fragmentModifyUserBinding.root, "수정이 완료되었습니다", Snackbar.LENGTH_SHORT).show()
Tools.hideSoftInput(contentActivity)
}
}

서버에서 사용자 데이터를 가져오는 메서드
fun gettingUserData(){
CoroutineScope(Dispatchers.Main).launch {
modifyUserViewModel.textFieldModifyUserInfoNickName.value = " "
modifyUserViewModel.textFieldModifyUserInfoAge.value = " "
modifyUserViewModel.textFieldModifyUserInfoPw.value = ""
modifyUserViewModel.textFieldModifyUserInfoPw2.value = ""
originalUserModel = UserDao.gettingUserInfoByUserIdx(contentActivity.loginUserIdx)!!
modifyUserViewModel.textFieldModifyUserInfoNickName.value = originalUserModel.userNickName
modifyUserViewModel.textFieldModifyUserInfoAge.value = originalUserModel.userAge.toString()
when(originalUserModel.userGender){
Gender.MALE.num -> modifyUserViewModel.settingGender(Gender.MALE)
Gender.FEMALE.num -> modifyUserViewModel.settingGender(Gender.FEMALE)
}
modifyUserViewModel.checkBoxModifyUserInfoHobby1.value = originalUserModel.userHobby1
modifyUserViewModel.checkBoxModifyUserInfoHobby2.value = originalUserModel.userHobby2
modifyUserViewModel.checkBoxModifyUserInfoHobby3.value = originalUserModel.userHobby3
modifyUserViewModel.checkBoxModifyUserInfoHobby4.value = originalUserModel.userHobby4
modifyUserViewModel.checkBoxModifyUserInfoHobby5.value = originalUserModel.userHobby5
modifyUserViewModel.checkBoxModifyUserInfoHobby6.value = originalUserModel.userHobby6
modifyUserViewModel.onCheckBoxChanged()
}
}

입력 요소 초기화 메서드 수정
fun settingInputForm(){
modifyUserViewModel.textFieldModifyUserInfoNickName.value = originalUserModel.userNickName
modifyUserViewModel.textFieldModifyUserInfoAge.value = originalUserModel.userAge.toString()
modifyUserViewModel.textFieldModifyUserInfoPw.value = ""
modifyUserViewModel.textFieldModifyUserInfoPw2.value = ""
when(originalUserModel.userGender){
Gender.MALE.num -> modifyUserViewModel.settingGender(Gender.MALE)
Gender.FEMALE.num -> modifyUserViewModel.settingGender(Gender.FEMALE)
}
modifyUserViewModel.checkBoxModifyUserInfoHobby1.value = originalUserModel.userHobby1
modifyUserViewModel.checkBoxModifyUserInfoHobby2.value = originalUserModel.userHobby2
modifyUserViewModel.checkBoxModifyUserInfoHobby3.value = originalUserModel.userHobby3
modifyUserViewModel.checkBoxModifyUserInfoHobby4.value = originalUserModel.userHobby4
modifyUserViewModel.checkBoxModifyUserInfoHobby5.value = originalUserModel.userHobby5
modifyUserViewModel.checkBoxModifyUserInfoHobby6.value = originalUserModel.userHobby6
modifyUserViewModel.onCheckBoxChanged()
}