package com.develop.auth.ui import android.graphics.Color import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.MutableLiveData import com.develop.auth.R import com.develop.auth.databinding.FragmentMemberProfileBinding import com.develop.auth.viewmodel.MemberViewModel import com.develop.base.ext.isBrand062 import com.develop.base.ext.isNightTheme import com.develop.base.ext.navigateTo import com.develop.base.ext.resId2Dimension import com.develop.base.ext.setVisible import com.develop.base.ext.text_color import com.develop.base.mvvm.BaseBVMFragment import com.develop.base.util.GlobalToast import com.develop.base.util.MMkvUtils import com.develop.base.util.ThreadUtils import com.develop.common.data_repo.FoodDataProvider import com.develop.common.data_repo.db.AuthModel import com.develop.common.data_repo.db.entity.UserInfo import com.develop.common.data_repo.net.model.response.User import com.develop.common.dialog.AgeSelectDialog import com.develop.common.dialog.GenderSelectDialog import com.develop.common.router.Screens import com.develop.common.tag.API_TOKEN import com.develop.common.tag.CURRENT_USER_ID import com.develop.common.tag.CURRENT_USER_ID_TAG import com.develop.common.tag.LOGIN_TAG import com.develop.common.ui.CommonBVMFragment class MemberProfileFragment : CommonBVMFragment() { private var selectAge = -1 private var selectGender = 0 override fun createViewBinding( inflater: LayoutInflater, container: ViewGroup? ): FragmentMemberProfileBinding { return FragmentMemberProfileBinding.inflate(inflater, container, false) } override fun onPostCreateView() { super.onPostCreateView() viewModel.queryUserInfo() binding.tvChooseAge.setOnClickListener { AgeSelectDialog(hostActivity) { index, change -> selectAge = // if (index == 0) { // 0 // } else if (index == 1) { // 20 // } else { // index + 19 // } if (index == 0) { 0 } else if (index == 1) { 1 } else if (index == 2) { 2 } else if (index == 3) { 3 } else { 0 } binding.tvChooseAge.text = ageStr(selectAge) binding.tvChooseAge.setTextColor(Color.BLACK) }.showDialog(childFragmentManager, "AgeSelectDialog") } binding.ivMember.setOnClickListener { UserIconSelectDialog(viewModel).showDialog(childFragmentManager, "UserIcon") } binding.tvChooseSex.setOnClickListener { GenderSelectDialog(selectGender) { selectGender = it when (selectGender) { 2 -> { binding.tvChooseSex.text = resources.getString(com.develop.common.R.string.male) } 1 -> { binding.tvChooseSex.text = resources.getString(com.develop.common.R.string.female) } else -> { binding.tvChooseSex.text = resources.getString(com.develop.common.R.string.none) } } binding.tvChooseSex.setTextColor(Color.BLACK) }.showDialog(parentFragmentManager, "gender") } binding.tvSave.setOnClickListener { saveProfile( binding.etNickname.text.toString(), selectAge, selectGender, viewModel.chooseAvatar.value ?: 0 ) } binding.tvSkipForNow.setOnClickListener { if (viewModel.enterFromHome) { val saveToken: String? = null MMkvUtils.save(API_TOKEN, saveToken) MMkvUtils.save(LOGIN_TAG, false) MMkvUtils.save(CURRENT_USER_ID_TAG, 0) FoodDataProvider.getUserDatabase().userInfoDao().deleteAllUserInfo() parentFragmentManager .beginTransaction() .replace(R.id.fl_container, MemberLoginFragment()) .commitAllowingStateLoss() viewModel.registerLiveData.postValue(AuthModel(false, "")) } else { if (isBrand062()){ navigateTo(Screens.Main.ENTRANCE_CHOSEN_TWO) }else{ navigateTo(Screens.Main.ENTRANCE_CHOSEN) } } } if (viewModel.enterFromHome) { binding.tvSkipForNow.text = "Sign out" } viewModel.apply { userInfoLiveData.observe(viewLifecycleOwner) { it?.apply { //做好改版前 0 20-80 的年龄兼容 if (userAge in 0..3){ //改动只返回0-3的年龄值,所对应的<20,20-40,41-60,>60 selectAge = userAge }else if (userAge in 20..40){ selectAge = 1 }else if (userAge in 41..60){ selectAge = 2 }else if (userAge>60){ selectAge = 3 }else{ selectAge = 0 } // selectAge = userAge selectGender = userGender?.toInt() ?: 0 binding.etNickname.setText(userName ?: "") viewModel.chooseAvatar.value = userAvatar?.toInt() when (selectGender) { 2 -> { binding.tvChooseSex.text = resources.getString(com.develop.common.R.string.male) binding.tvChooseSex.setTextColor(Color.BLACK) } 1 -> { binding.tvChooseSex.text = resources.getString(com.develop.common.R.string.female) binding.tvChooseSex.setTextColor(Color.BLACK) } 0 -> { binding.tvChooseSex.text = resources.getString(com.develop.common.R.string.none) binding.tvChooseSex.setTextColor(Color.BLACK) } } if (selectAge !=-1) { binding.tvChooseAge.text = ageStr(selectAge) binding.tvChooseAge.setTextColor(Color.BLACK) } } } perfectInfoLiveData.observe(viewLifecycleOwner) { Log.e("TAG perfect", "perfect:${it.toString()}") dismissPlainDialog() it.msg?.apply { showToast(this) } if (it.success) { if (isBrand062()){ navigateTo(Screens.Main.ENTRANCE_CHOSEN_TWO) }else{ navigateTo(Screens.Main.ENTRANCE_CHOSEN) } hostActivity.finish() } } viewModel.chooseAvatar.observe(viewLifecycleOwner) { val icons = listOf( com.develop.common.R.drawable.ic_icon1, com.develop.common.R.drawable.ic_icon2, com.develop.common.R.drawable.ic_icon3, com.develop.common.R.drawable.ic_icon4, com.develop.common.R.drawable.ic_icon5, com.develop.common.R.drawable.ic_icon6 ) val chooseIcon = icons.getOrNull(it ?: 0) ?: com.develop.common.R.drawable.ic_icon1 binding.ivMember.setImageResource(chooseIcon) } cancelAccountLiveData.observe(viewLifecycleOwner) { dismissPlainDialog() FoodDataProvider .getUserDatabase() .userInfoDao() .deleteUserInfoByUserId(CURRENT_USER_ID) val saveToken: String? = null MMkvUtils.save(API_TOKEN, saveToken) MMkvUtils.save(LOGIN_TAG, false) MMkvUtils.save(CURRENT_USER_ID_TAG, 0) FoodDataProvider.getUserDatabase().userInfoDao().deleteAllUserInfo() parentFragmentManager .beginTransaction() .replace(R.id.fl_container, MemberLoginFragment()) .commitAllowingStateLoss() } } binding.tvDestroyAccount.setOnClickListener { showPlainDialog(true) viewModel.cancelAccount() } if (isNightTheme() || true) { binding.tvDestroyAccount.setVisible() } } private fun saveProfile( nickname: String?, age: Int, sex: Int, portrait: Int ) { if (nickname.isNullOrEmpty()) { showToast(getString(com.develop.common.R.string.please_fill_in_nickname)) return } // if (age == 0) { // showToast("Please fill in age") // return // } showPlainDialog(true) viewModel.perfectInfo(nickname, sex.toString(), portrait.toString(), age.toString()) } //处理年龄改动问题 private fun ageStr(index :Int):String{ var age = when(index){ 0->{ "<20" } 1->{ "20-40" } 2->{ "41-60" } 3->{ ">60" }else -> {"<20"} } return age } override fun createViewModel(): MemberViewModel { return getViewModelOfActivity(MemberViewModel::class.java) } }