-
Notifications
You must be signed in to change notification settings - Fork 5
5.2. 로그인
mdb1217 edited this page Jan 15, 2021
·
4 revisions
(1) 다양한 Listener를 사용한 예외처리
- SignInActivity.kt
class SignInActivity : BaseActivity<ActivitySignInBinding, UserViewModel>() {
override val layoutResourceId: Int
get() = R.layout.activity_sign_in
override val viewModel: UserViewModel by viewModel()
private var passwordIsVisible = true
private var isValidPassword = false
private var isValidEmail = false
override fun initView() {
initClickEvent()
visibleButtonChange()
etColorChange()
emailAndPasswordValid()
setupToast(this, viewModel.toastMessage)
}
override fun initBeforeBinding() {
}
override fun initAfterBinding() {
observeSignInResult()
}
override fun onStart() {
super.onStart()
if(getAutoLogin() && getUserToken() != ""){
if(getKeywordExist()){
startMainActivity()
}else {
startKeywordListActivity()
}
}
}
private fun initClickEvent() {
binding.ibAutoLogin.isSelected = true
binding.ibAutoLogin.setOnClickListener {
it.isSelected = !it.isSelected
FourMostPreference.setAutoLogin(it.isSelected)
}
binding.tvFindId.setOnClickListener {
shortToast(R.string.msg_service_is_being_prepared)
}
binding.tvFindPassword.setOnClickListener {
shortToast(R.string.msg_service_is_being_prepared)
}
binding.tvSignUp.setOnClickListener {
startActivity(Intent(this, SignUpTermsActivity::class.java))
}
binding.btnSignIn.setOnClickListener {
val email = binding.etEmail.text.toString()
val password = binding.etPassword.text.toString()
if (isValidEmail && isValidPassword) {
viewModel.postSignIn(email, password)
}else {
shortToast(R.string.msg_sign_in_error)
}
}
}
private fun emailAndPasswordValid() {
binding.etEmail.addTextChangedListener {
isValidEmail = !LoginPatternCheckUtil.isNotValidEmail(binding.etEmail.text.toString())
binding.btnSignIn.isEnabled = binding.etEmail.text.isNotEmpty() && binding.etPassword.text.isNotEmpty()
}
binding.etPassword.addTextChangedListener {
isValidPassword = !LoginPatternCheckUtil.isNotValidPassword(binding.etPassword.text.toString())
binding.btnSignIn.isEnabled = binding.etEmail.text.isNotEmpty() && binding.etPassword.text.isNotEmpty()
}
}
private fun visibleButtonChange() {
binding.ivVisibleButton.setOnClickListener {
if(passwordIsVisible) {
binding.ivVisibleButton.setBackgroundResource(R.drawable.ic_visible)
binding.etPassword.transformationMethod = HideReturnsTransformationMethod.getInstance()
passwordIsVisible = false
}
else {
binding.ivVisibleButton.setBackgroundResource(R.drawable.ic_invisible)
binding.etPassword.transformationMethod = PasswordTransformationMethod.getInstance()
passwordIsVisible = true
}
}
}
private fun etColorChange() {
binding.etEmail.setOnFocusChangeListener { view, hasFocus ->
if(hasFocus){
binding.etEmail.setBackgroundResource(R.drawable.rectangle_orange_radius_15)
}
else {
if(binding.etEmail.text.isEmpty()) {
binding.etEmail.setBackgroundResource(R.drawable.rectangle_gray_radius_15)
}
}
}
binding.etPassword.setOnFocusChangeListener { view, hasFocus ->
if(hasFocus){
binding.clPassword.setBackgroundResource(R.drawable.rectangle_orange_radius_15)
binding.ivVisibleButton.visibility = View.VISIBLE
}
else {
if(binding.etPassword.text.isEmpty()) {
binding.clPassword.setBackgroundResource(R.drawable.rectangle_gray_radius_15)
binding.ivVisibleButton.visibility = View.INVISIBLE
}
}
}
}
private fun observeSignInResult() {
viewModel.signInEvent.observe(this, EventObserver{
setKeywordExist(it == "keywordsExist")
if(it == "keywordsExist"){
startMainActivity()
}else {
startKeywordListActivity()
}
})
}
private fun startMainActivity() {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
private fun startKeywordListActivity() {
startActivity(Intent(this, KeywordListActivity::class.java))
finish()
}
}
로그인 |
---|