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) }
}
}