Skip to content

Commit

Permalink
[feat] #23 feat : 로그아웃 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
plashdof committed Oct 4, 2024
1 parent 31530d5 commit 549daa8
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,6 @@ interface AuthRepository {
suspend fun deleteRefreshToken()
suspend fun deleteUserId()
suspend fun deleteNick()

suspend fun clear()
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,10 @@ class AuthRepositoryImpl @Inject constructor(
prefs.remove(NICK)
}
}

override suspend fun clear() {
dataStore.edit{ prefs ->
prefs.clear()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ sealed class LoginEvent {
data class NavigateToSignup(val token: String, val provider: String) : LoginEvent()
data object NavigateToMain : LoginEvent()
data class ShowToastMessage(val msg: String) : LoginEvent()
data object ShowLoading: LoginEvent()
data object DismissLoading: LoginEvent()
data object ShowLoading : LoginEvent()
data object DismissLoading : LoginEvent()
}

@HiltViewModel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(R.layout.fragment_home) {
when (it) {
is HomeEvent.NavigateToRecord -> findNavController().toAlcoholSelect()
is HomeEvent.NavigateToShowRecord -> findNavController().toShowAlcohol(it.alcohol)
is HomeEvent.ShowToastMessage -> showToastMessage(it.msg)
is HomeEvent.NavigateToMyPage -> findNavController().toMyPage()
}
}
}
Expand All @@ -98,4 +100,9 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(R.layout.fragment_home) {
navigate(action)
}

private fun NavController.toMyPage() {
val action = HomeFragmentDirections.actionHomeFragmentToMyPageFragment()
navigate(action)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ data class HomeUiState(
sealed class HomeEvent {
data object NavigateToRecord : HomeEvent()
data class NavigateToShowRecord(val alcohol: Alcohol) : HomeEvent()
data object NavigateToMyPage : HomeEvent()
data class ShowToastMessage(val msg: String) : HomeEvent()
}

@HiltViewModel
Expand All @@ -45,15 +47,15 @@ class HomeViewModel @Inject constructor(
is BaseState.Success -> {
it.data?.let { data ->
existRecordLiquor.update {
data.liquorHistoryTypes.map{ item ->
data.liquorHistoryTypes.map { item ->
Alcohol.nameToEnum(item)
}
}
}
}

is BaseState.Error -> {

_event.emit(HomeEvent.ShowToastMessage(it.message))
}
}
}
Expand Down Expand Up @@ -90,4 +92,10 @@ class HomeViewModel @Inject constructor(
}
}

fun navigateToMyPage() {
viewModelScope.launch {
_event.emit(HomeEvent.NavigateToMyPage)
}
}

}
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package com.masshow.presentation.ui.main.mypage

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.masshow.presentation.R
import com.masshow.presentation.base.BaseFragment
import com.masshow.presentation.databinding.FragmentMypageBinding
import com.masshow.presentation.ui.intro.IntroActivity
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class MyPageFragment: BaseFragment<FragmentMypageBinding>(R.layout.fragment_mypage) {
class MyPageFragment : BaseFragment<FragmentMypageBinding>(R.layout.fragment_mypage) {

private val viewModel : MyPageViewModel by viewModels()
private val viewModel: MyPageViewModel by viewModels()

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Expand All @@ -21,12 +23,18 @@ class MyPageFragment: BaseFragment<FragmentMypageBinding>(R.layout.fragment_mypa
initEventObserve()
}

private fun initEventObserve(){
private fun initEventObserve() {
repeatOnStarted {
viewModel.event.collect{
when(it){
viewModel.event.collect {
when (it) {
is MyPageEvent.NavigateToBack -> findNavController().navigateUp()
is MyPageEvent.NavigateToLogin -> {}
is MyPageEvent.NavigateToLogin -> {
val intent = Intent(requireContext(), IntroActivity::class.java)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(intent)
}

is MyPageEvent.ShowToastMessage -> showToastMessage(it.msg)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.masshow.presentation.ui.main.mypage

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.masshow.data.repository.AuthRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
Expand All @@ -12,16 +13,23 @@ import javax.inject.Inject
sealed class MyPageEvent {
data object NavigateToBack : MyPageEvent()
data object NavigateToLogin : MyPageEvent()
data class ShowToastMessage(val msg: String) : MyPageEvent()
}

@HiltViewModel
class MyPageViewModel @Inject constructor() : ViewModel() {
class MyPageViewModel @Inject constructor(
private val authRepository: AuthRepository
) : ViewModel() {

private val _event = MutableSharedFlow<MyPageEvent>()
val event: SharedFlow<MyPageEvent> = _event.asSharedFlow()

fun logout() {

viewModelScope.launch {
authRepository.clear()
_event.emit(MyPageEvent.ShowToastMessage("로그아웃 성공"))
_event.emit(MyPageEvent.NavigateToLogin)
}
}

fun withdrawal() {
Expand Down
1 change: 1 addition & 0 deletions presentation/src/main/res/layout/fragment_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:onClick="@{() -> vm.navigateToMyPage()}"
android:src="@drawable/ic_lab"
app:layout_constraintBottom_toBottomOf="@id/tv_nick"
app:layout_constraintEnd_toEndOf="parent"
Expand Down

0 comments on commit 549daa8

Please sign in to comment.