Skip to content

Commit

Permalink
[refactor] #7 mypage
Browse files Browse the repository at this point in the history
  • Loading branch information
Sangwook123 committed May 3, 2024
1 parent 205fcab commit 8b3d6d0
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 34 deletions.
Original file line number Diff line number Diff line change
@@ -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
}
14 changes: 7 additions & 7 deletions feature/mypage/src/main/java/org/sopt/mypage/MypageFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -49,8 +50,8 @@ class MypageFragment : Fragment() {
viewModel.logout()
}

binding.btnMypageWithdraw.setOnClickListener {
viewModel.signout()
binding.btnMypageModifyPassword.setOnClickListener {
viewModel.modifyPassword()
}
}

Expand All @@ -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) {
Expand All @@ -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)
}
}
}
Expand Down
27 changes: 10 additions & 17 deletions feature/mypage/src/main/java/org/sopt/mypage/MypageViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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<MypageState, MypageSideEffect>, ViewModel() {
override val container: Container<MypageState, MypageSideEffect> = 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() }

}
14 changes: 7 additions & 7 deletions feature/mypage/src/main/res/layout/fragment_mypage.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
app:layout_constraintStart_toStartOf="parent" />

<TextView
android:id="@+id/tv_mypage_hobby"
android:id="@+id/tv_mypage_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="취미"
tools:text=""
android:textSize="30dp"
android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@id/tv_mypage_name"
Expand All @@ -33,17 +33,17 @@
android:layout_height="wrap_content"
android:text="로그아웃"
android:layout_marginBottom="20dp"
app:layout_constraintStart_toStartOf="@id/btn_mypage_withdraw"
app:layout_constraintEnd_toEndOf="@id/btn_mypage_withdraw"
app:layout_constraintBottom_toTopOf="@id/btn_mypage_withdraw"/>
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"/>

<Button
android:id="@+id/btn_mypage_withdraw"
android:id="@+id/btn_mypage_modify_password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:layout_marginBottom="30dp"
android:text="회원탈퇴"
android:text="비번 변경"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
Expand Down

0 comments on commit 8b3d6d0

Please sign in to comment.