fun signIn()

in apps/chat-android/app/src/main/java/com/amazonaws/services/chime/sdkdemo/ui/signin/presentation/SignInViewModel.kt [66:105]


    fun signIn() {
        val currentUserName = userName.value?.trim()
        val currentPassword = password.value?.trim()

        if (currentUserName.isNullOrBlank() || currentPassword.isNullOrBlank()) {
            _viewState.value = Error(Exception("User name or password cannot be empty"))
            return
        }

        _viewState.value = Loading()

        viewModelScope.launch {
            userRepository.signIn(currentUserName, currentPassword)
                .onSuccess {

                    with(sharedPrefs.edit()) {
                        putString(USERNAME_KEY, userName.value)
                        putString(PASSWORD_KEY, password.value)
                        apply()
                    }

                    userRepository.getCurrentUser()
                        .onSuccess {
                            userRepository.getAWSCredentials().onSuccess {
                                userRepository.initialize(
                                    ChimeUserCredentials(
                                        it.awsAccessKeyId,
                                        it.awsSecretKey,
                                        if (it is AWSSessionCredentials) it.sessionToken else null
                                    )
                                )
                            }
                        }

                    storeDeviceTokenLocally()
                    _viewState.value = Success()
                }
                .onFailure { _viewState.value = Error(it) }
        }
    }