BIT-2256: Clear pending admin request when request is completed (#1284)

This commit is contained in:
David Perez
2024-04-17 16:58:57 -05:00
committed by Álison Fernandes
parent e69ef60f53
commit 4ac9d05036
2 changed files with 24 additions and 7 deletions

View File

@@ -35,6 +35,7 @@ private const val PASSWORDLESS_APPROVER_INTERVAL_MILLIS: Long = 5L * 60L * 1_000
/**
* Default implementation of [AuthRequestManager].
*/
@Suppress("TooManyFunctions")
@Singleton
class AuthRequestManagerImpl(
private val clock: Clock,
@@ -106,6 +107,7 @@ class AuthRequestManagerImpl(
onSuccess = { updateAuthRequest ->
when {
updateAuthRequest.requestApproved -> {
clearPendingAuthRequest()
isComplete = true
emit(
CreateAuthRequestResult.Success(
@@ -117,6 +119,7 @@ class AuthRequestManagerImpl(
!updateAuthRequest.requestApproved &&
updateAuthRequest.responseDate != null -> {
clearPendingAuthRequest()
isComplete = true
emit(CreateAuthRequestResult.Declined)
}
@@ -126,6 +129,7 @@ class AuthRequestManagerImpl(
.toInstant()
.plusMillis(PASSWORDLESS_NOTIFICATION_TIMEOUT_MILLIS)
.isBefore(clock.instant()) -> {
clearPendingAuthRequest()
isComplete = true
emit(CreateAuthRequestResult.Expired)
}
@@ -140,6 +144,15 @@ class AuthRequestManagerImpl(
}
}
private fun clearPendingAuthRequest() {
activeUserId?.let {
authDiskSource.storePendingAuthRequest(
userId = it,
pendingAuthRequest = null,
)
}
}
private fun getAuthRequest(
initialRequest: suspend () -> AuthRequestUpdatesResult,
): Flow<AuthRequestUpdatesResult> = flow {