diff --git a/feature/mypage/src/main/java/org/sopt/mypage/MypageContract.kt b/feature/mypage/src/main/java/org/sopt/mypage/MypageContract.kt index ef15992..963d295 100644 --- a/feature/mypage/src/main/java/org/sopt/mypage/MypageContract.kt +++ b/feature/mypage/src/main/java/org/sopt/mypage/MypageContract.kt @@ -1,12 +1,12 @@ package org.sopt.mypage data class MypageState( - val name: String = "", - val hobby: String = "", + val nickname: String = "", + val phone: String = "", ) sealed interface MypageSideEffect { data object LogoutSuccess : MypageSideEffect - data object WithdrawSuccess : MypageSideEffect + data object NavigateModifyPassword : MypageSideEffect } \ No newline at end of file diff --git a/feature/mypage/src/main/java/org/sopt/mypage/MypageFragment.kt b/feature/mypage/src/main/java/org/sopt/mypage/MypageFragment.kt index 864b9a3..ae29e06 100644 --- a/feature/mypage/src/main/java/org/sopt/mypage/MypageFragment.kt +++ b/feature/mypage/src/main/java/org/sopt/mypage/MypageFragment.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import org.orbitmvi.orbit.viewmodel.observe import org.sopt.common.intentprovider.IntentProvider @@ -49,8 +50,8 @@ class MypageFragment : Fragment() { viewModel.logout() } - binding.btnMypageWithdraw.setOnClickListener { - viewModel.signout() + binding.btnMypageModifyPassword.setOnClickListener { + viewModel.modifyPassword() } } @@ -59,8 +60,8 @@ class MypageFragment : Fragment() { } private fun render(mypageState: MypageState) { - binding.tvMypageName.text = mypageState.name - binding.tvMypageHobby.text = mypageState.hobby + binding.tvMypageName.text = mypageState.nickname + binding.tvMypagePhone.text = mypageState.phone } private fun handleSideEffect(sideEffect: MypageSideEffect) { @@ -70,9 +71,8 @@ class MypageFragment : Fragment() { requireActivity().finish() } - MypageSideEffect.WithdrawSuccess -> { - startActivity(intentProvider.getIntent()) - requireActivity().finish() + MypageSideEffect.NavigateModifyPassword -> { + findNavController().navigate(R.id.action_navigation_mypage_to_navigation_modify_password) } } } diff --git a/feature/mypage/src/main/java/org/sopt/mypage/MypageViewModel.kt b/feature/mypage/src/main/java/org/sopt/mypage/MypageViewModel.kt index a2b4c60..7d00932 100644 --- a/feature/mypage/src/main/java/org/sopt/mypage/MypageViewModel.kt +++ b/feature/mypage/src/main/java/org/sopt/mypage/MypageViewModel.kt @@ -10,39 +10,32 @@ import org.orbitmvi.orbit.syntax.simple.intent import org.orbitmvi.orbit.syntax.simple.postSideEffect import org.orbitmvi.orbit.syntax.simple.reduce import org.orbitmvi.orbit.viewmodel.container +import org.sopt.domain.repo.AuthRepository import org.sopt.domain.repo.UserDataRepository import javax.inject.Inject @HiltViewModel class MypageViewModel @Inject constructor( - private val userDataRepository: UserDataRepository, + private val authRepository: AuthRepository, ) : ContainerHost, ViewModel() { override val container: Container = container(MypageState()) init { - getUserData() + getUserInfo() } - private fun getUserData() = intent { - userDataRepository.getUserData().collect { - reduce { state.copy(name = it.name, hobby = it.hobby) } + private fun getUserInfo() = intent { + authRepository.getUserinfo().onSuccess { + if (it == null) return@intent + reduce { state.copy(nickname = it.nickname, phone = it.phone) } } } fun logout() = intent { - setAutoLoginFalse() - .onSuccess { postSideEffect(MypageSideEffect.LogoutSuccess) } + postSideEffect(MypageSideEffect.LogoutSuccess) } - fun signout() = intent { - deleteUserData() - .onSuccess { postSideEffect(MypageSideEffect.WithdrawSuccess) } + fun modifyPassword() = intent { + postSideEffect(MypageSideEffect.NavigateModifyPassword) } - - private suspend fun setAutoLoginFalse() = - runCatching { userDataRepository.setAutoLogin(false) } - - private suspend fun deleteUserData() = - runCatching { userDataRepository.deleteUserData() } - } \ No newline at end of file diff --git a/feature/mypage/src/main/res/layout/fragment_mypage.xml b/feature/mypage/src/main/res/layout/fragment_mypage.xml index 81f3474..83d9cad 100644 --- a/feature/mypage/src/main/res/layout/fragment_mypage.xml +++ b/feature/mypage/src/main/res/layout/fragment_mypage.xml @@ -18,10 +18,10 @@ app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="@id/btn_mypage_modify_password" + app:layout_constraintEnd_toEndOf="@id/btn_mypage_modify_password" + app:layout_constraintBottom_toTopOf="@id/btn_mypage_modify_password"/>