@@ -3,8 +3,13 @@ package com.velogm.presentation.ui.signin
3
3
import androidx.lifecycle.ViewModel
4
4
import androidx.lifecycle.viewModelScope
5
5
import com.velogm.core_ui.view.UiState
6
+ import com.velogm.domain.NetworkErrorHandling
7
+ import com.velogm.domain.collectOutResult
6
8
import com.velogm.domain.repository.AuthRepository
7
9
import com.velogm.domain.usecase.AccessTokenUseCase
10
+ import com.velogm.domain.usecase.GetTagUseCase
11
+ import com.velogm.presentation.mapper.toTagModelEntity
12
+ import com.velogm.presentation.model.TagModel
8
13
import dagger.hilt.android.lifecycle.HiltViewModel
9
14
import kotlinx.coroutines.flow.MutableStateFlow
10
15
import kotlinx.coroutines.flow.StateFlow
@@ -15,10 +20,14 @@ import javax.inject.Inject
15
20
16
21
@HiltViewModel
17
22
class SignViewModel @Inject constructor(
23
+ private val getTagUseCase : GetTagUseCase ,
18
24
private val tokenUseCase : AccessTokenUseCase ,
19
25
private val authRepository : AuthRepository
20
26
) : ViewModel() {
21
27
28
+ private val _tagListData = MutableStateFlow <UiState <List <TagModel >>>(UiState .Loading )
29
+ val tagListData: StateFlow <UiState <List <TagModel >>> = _tagListData .asStateFlow()
30
+
22
31
private val _token = MutableStateFlow <UiState <String >>(UiState .Loading )
23
32
val token: StateFlow <UiState <String >> = _token .asStateFlow()
24
33
@@ -28,6 +37,31 @@ class SignViewModel @Inject constructor(
28
37
private val _withdrawal = MutableStateFlow <UiState <Boolean >>(UiState .Loading )
29
38
val withdrawal: StateFlow <UiState <Boolean >> = _withdrawal .asStateFlow()
30
39
40
+ init {
41
+ getTag()
42
+ }
43
+
44
+ fun getTag () = viewModelScope.launch {
45
+ getTagUseCase().collectOutResult(
46
+ handleSuccess = {
47
+ val tagList = it.data.toTagModelEntity()
48
+ _tagListData .value = UiState .Success (tagList)
49
+ Timber .d(it.toString())
50
+ },
51
+ handleFail = {
52
+ val errorHandling = when (it.error?.message) {
53
+ " 401" -> NetworkErrorHandling .Unauthorized
54
+ " 500" -> NetworkErrorHandling .ServerError
55
+ else -> NetworkErrorHandling .OtherError
56
+ }
57
+ when (errorHandling) {
58
+ is NetworkErrorHandling .Unauthorized -> postLogout()
59
+ is NetworkErrorHandling .ServerError -> Timber .d(" 서버에러" )
60
+ is NetworkErrorHandling .OtherError -> Timber .d(" 다른에러" )
61
+ }
62
+ }
63
+ )
64
+ }
31
65
fun getGoogleLogin (code : String ) = viewModelScope.launch {
32
66
tokenUseCase(code).collect { token ->
33
67
_token .value = UiState .Success (token.accessToken)
0 commit comments