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