This commit is contained in:
Adam Velebil 2023-09-25 14:59:57 +02:00
commit 5f78b0952f
No known key found for this signature in database
GPG Key ID: C9B1E4A3CBBD2E10

View File

@ -62,6 +62,7 @@ import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.*
import kotlinx.serialization.encodeToString
import org.slf4j.LoggerFactory
import java.io.IOException
import java.net.URI
import java.util.concurrent.Executors
import java.util.concurrent.atomic.AtomicBoolean
@ -554,8 +555,17 @@ class OathManager(
NULL
}
private suspend fun requestRefresh() =
private suspend fun requestRefresh() {
val clearCodes = {
val currentCredentials = oathViewModel.credentials.value
oathViewModel.updateCredentials(currentCredentials?.associate {
it.credential to null
} ?: emptyMap())
}
appViewModel.connectedYubiKey.value?.let { usbYubiKeyDevice ->
try {
useOathSessionUsb(usbYubiKeyDevice) { session ->
try {
oathViewModel.updateCredentials(calculateOathCodes(session))
@ -576,7 +586,16 @@ class OathManager(
}
}
}
} catch (ioException: IOException) {
logger.error("IOException when accessing USB device: ", ioException)
clearCodes()
} catch (illegalStateException: IllegalStateException) {
logger.error("IllegalStateException when accessing USB device: ", illegalStateException)
clearCodes()
}
}
}
private suspend fun calculate(credentialId: String): String =
useOathSession(OathActionDescription.CalculateCode) { session ->