diff --git a/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInActivity.kt b/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInActivity.kt index c02ed3e..9a361b4 100644 --- a/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInActivity.kt +++ b/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInActivity.kt @@ -3,6 +3,7 @@ package com.sopt.now.presentation.ui.auth.signin import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.ViewModelProvider import com.sopt.now.R import com.sopt.now.data.User import com.sopt.now.databinding.ActivitySigninBinding @@ -14,19 +15,34 @@ import com.sopt.now.presentation.utils.showToast class SignInActivity : AppCompatActivity() { private lateinit var binding: ActivitySigninBinding - private var user: User? = null + private lateinit var viewModel: SignInViewModel + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySigninBinding.inflate(layoutInflater) setContentView(binding.root) + viewModel = ViewModelProvider(this)[SignInViewModel::class.java] getUserInfo() + setupObservers() onSignInClicked() onSignUpClicked() } private fun getUserInfo() { - user = intent.getSafeParcelable(KeyStorage.USER_INFO, User::class.java) + val user = intent.getSafeParcelable(KeyStorage.USER_INFO, User::class.java) + viewModel.setUser(user) + } + + private fun setupObservers() { + viewModel.signInState.observe(this) { isSuccess -> + if (isSuccess) { + showToast(this, getString(R.string.signin_signin_success)) + navigateToMain() + } else { + showToast(this, getString(R.string.signin_signin_failure)) + } + } } private fun onSignInClicked() { @@ -34,13 +50,7 @@ class SignInActivity : AppCompatActivity() { with(binding) { val inputId = etSignInId.text.toString() val inputPassword = etSignInPw.text.toString() - - if (inputId == user?.id && inputPassword == user?.password) { - showToast(this@SignInActivity, getString(R.string.signin_signin_success)) - navigateToMain() - } else { - showToast(this@SignInActivity, getString(R.string.signin_signin_failure)) - } + viewModel.validateSignIn(inputId, inputPassword) } } } @@ -53,7 +63,7 @@ class SignInActivity : AppCompatActivity() { private fun navigateToMain() { val intent = Intent(this@SignInActivity, MainActivity::class.java) - intent.putExtra(KeyStorage.USER_INFO, user) + intent.putExtra(KeyStorage.USER_INFO, viewModel.user.value) startActivity(intent) } diff --git a/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInViewModel.kt b/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInViewModel.kt new file mode 100644 index 0000000..60d2754 --- /dev/null +++ b/app/src/main/java/com/sopt/now/presentation/ui/auth/signin/SignInViewModel.kt @@ -0,0 +1,26 @@ +package com.sopt.now.presentation.ui.auth.signin + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.sopt.now.data.User + +class SignInViewModel : ViewModel() { + private val _user = MutableLiveData() + val user: LiveData = _user + + private val _signInState = MutableLiveData() + val signInState: LiveData = _signInState + + fun setUser(user: User?) { + _user.value = user + } + + fun validateSignIn(inputId: String, inputPassword: String) { + if (inputId == _user.value?.id && inputPassword == _user.value?.password) { + _signInState.value = true + } else { + _signInState.value = false + } + } +}