in apps/chat-android/app/src/main/java/com/amazonaws/services/chime/sdkdemo/ui/messaging/presentation/MessagingViewModel.kt [73:109]
suspend fun initialize() {
if (!this::currentUser.isInitialized || !this::currentUserCredentials.isInitialized) {
val currentUsername = sharedPrefs.getString(USERNAME_KEY, "")
val currentPassword = sharedPrefs.getString(PASSWORD_KEY, "")
if (currentPassword.isNullOrEmpty() || currentUsername.isNullOrEmpty()) {
_viewState.value = Error(java.lang.RuntimeException(APP_INSTANCE_USER_NOT_FOUND))
return
}
userRepository.signIn(currentUsername, currentPassword)
.onFailure {
_viewState.value = Error(it)
return@onFailure
}
userRepository.getCurrentUser()
.onSuccess { user ->
currentUser = user
userRepository.getAWSCredentials().onSuccess {
var creds = ChimeUserCredentials(
it.awsAccessKeyId,
it.awsSecretKey,
if (it is AWSSessionCredentials) it.sessionToken else null
)
currentUserCredentials = creds
userRepository.initialize(creds)
messageRepository.initialize(creds)
}
}
.onFailure { _viewState.value = Error(it) }
} else {
userRepository.initialize(currentUserCredentials)
messageRepository.initialize(currentUserCredentials)
}
}