suspend fun initialize()

in apps/chat-android/app/src/main/java/com/amazonaws/services/chime/sdkdemo/ui/channel/presentation/ChannelViewModel.kt [46:82]


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