suspend fun password()

in Fido2/app/src/main/java/com/google/android/gms/identity/sample/fido2/repository/AuthRepository.kt [126:156]


    suspend fun password(password: String) {
        val username = dataStore.read(USERNAME)!!
        val sessionId = dataStore.read(SESSION_ID)!!
        try {
            when (val result = api.password(sessionId, password)) {
                ApiResult.SignedOutFromServer -> forceSignOut()
                is ApiResult.Success -> {
                    if (result.sessionId != null) {
                        dataStore.edit { prefs ->
                            prefs[SESSION_ID] = result.sessionId
                        }
                    }
                    signInStateMutable.emit(SignInState.SignedIn(username))
                    refreshCredentials()
                }
            }
        } catch (e: ApiException) {
            Log.e(TAG, "Invalid login credentials", e)

            // start login over again
            dataStore.edit { prefs ->
               prefs.remove(USERNAME)
               prefs.remove(SESSION_ID)
               prefs.remove(CREDENTIALS)
            }

            signInStateMutable.emit(
                SignInState.SignInError(e.message ?: "Invalid login credentials")
            )
        }
    }