Skip to content

Commit

Permalink
[MOD/#19] enqueue로 통신 했던 것을 코루틴 suspend로 대체 - 로그인 성공, response 받아오기 성공
Browse files Browse the repository at this point in the history
  • Loading branch information
kangyuri1114 committed Dec 6, 2023
1 parent 363da8f commit 149c5b6
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ interface AuthService {
@POST("api/v1/members/sign-in")
suspend fun login(
@Body request: RequestLoginDto,
): Call<ResponseLoginDto>
): ResponseLoginDto
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import android.view.MotionEvent
import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import org.sopt.dosopttemplate.R
import org.sopt.dosopttemplate.data.User
import org.sopt.dosopttemplate.databinding.ActivityLoginBinding
import org.sopt.dosopttemplate.di.UserSharedPreferences
Expand Down Expand Up @@ -70,7 +69,32 @@ class LoginActivity : AppCompatActivity() {
}

is UiState.Failure -> {
//showShortSnackBar(binding.root, "로그인 성공, 유저 아이디 : ${loginViewModel.}")
showShortSnackBar(binding.root, "실패")
}

is UiState.Loading -> {
showShortSnackBar(binding.root, "로딩중")
}
}
}

loginViewModel.getLoginInfo.observe(
this,
) { uiState ->
when (uiState) {
is UiState.Success -> {
if (binding.cbLoginAutologin.isChecked) {
signUpUser?.let {
loginViewModel.saveUserForAutoLogin(this, it)
}
}

val userId = uiState.data?.userId
showShortSnackBar(binding.root, "로그인 성공, 유저 아이디 : $userId")
}

is UiState.Failure -> {
showShortSnackBar(binding.root, "실패")
}

is UiState.Loading -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,30 @@ import kotlinx.coroutines.launch
import org.sopt.dosopttemplate.data.User
import org.sopt.dosopttemplate.data.remote.ServicePool
import org.sopt.dosopttemplate.data.remote.request.RequestLoginDto
import org.sopt.dosopttemplate.data.remote.response.ResponseLoginDto
import org.sopt.dosopttemplate.di.UserSharedPreferences
import org.sopt.dosopttemplate.util.UiState
import retrofit2.Call

class LoginViewModel : ViewModel() {
private val _loginResult = MutableLiveData<UiState<Boolean>>()
val loginResult: LiveData<UiState<Boolean>> get() = _loginResult

private val _getLoginInfo = MutableLiveData<UiState<User>>()
val getLoginInfo: LiveData<UiState<User>> get() = _getLoginInfo

fun loginUser(inputId: String, inputPw: String) = viewModelScope.launch {
_loginResult.value = UiState.Loading
lateinit var getUserInfo: Call<ResponseLoginDto>

runCatching {
ServicePool.authService.login(
RequestLoginDto(inputId, inputPw),
)
}.onSuccess {
// getUserInfo = it
_loginResult.value = UiState.Success(true)
_getLoginInfo.value = UiState.Success(User(it.id.toString(), it.username, it.nickname))
}.onFailure {
_loginResult.value = UiState.Failure(it.message.toString())
}

_loginResult.value = UiState.Success(true)
}

fun saveUserForAutoLogin(context: Context, signUpUser: User) {
Expand Down

0 comments on commit 149c5b6

Please sign in to comment.