diff options
| author | Harsh Shandilya <me@msfjarvis.dev> | 2022-03-11 01:52:39 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-10 20:22:39 +0000 |
| commit | 2f034bc2372d29b4ddebf74d532279073fb3d92b (patch) | |
| tree | dc9197276622c56f32c9b395e9339a046f608103 /app/src/main/java/dev/msfjarvis/aps/ui/crypto | |
| parent | 3e988b2a3428c3759535a2bd1f3e1ba0b5e411a3 (diff) | |
| download | HardenedPass-2f034bc2372d29b4ddebf74d532279073fb3d92b.tar.gz HardenedPass-2f034bc2372d29b4ddebf74d532279073fb3d92b.zip | |
Show remaining time in TOTP field (#1766)
* Pass down remaining time for TOTPs to UI layer
* format-common: switch TOTP flow to use co-operative cancelation
* format-common: add a regression test for OTP duration calculation
* Abstract out labels
* Switch to launchIn
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/ui/crypto')
| -rw-r--r-- | app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt | 9 | ||||
| -rw-r--r-- | app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivityV2.kt | 15 |
2 files changed, 7 insertions, 17 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt index 413e6f6a..c6fda844 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt @@ -30,8 +30,8 @@ import kotlin.time.Duration import kotlin.time.ExperimentalTime import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -210,12 +210,7 @@ class DecryptActivity : BasePgpActivity(), OpenPgpServiceConnection.OnBound { binding.recyclerView.adapter = adapter if (entry.hasTotp()) { - lifecycleScope.launch { - entry - .totp - .onEach { code -> withContext(Dispatchers.Main) { adapter.updateOTPCode(code) } } - .collect() - } + entry.totp.onEach(adapter::updateOTPCode).launchIn(lifecycleScope) } } .onFailure { e -> logcat(ERROR) { e.asLog() } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivityV2.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivityV2.kt index f5c02e49..21cd42aa 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivityV2.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivityV2.kt @@ -25,17 +25,18 @@ import dev.msfjarvis.aps.util.settings.PreferenceKeys import java.io.ByteArrayOutputStream import java.io.File import javax.inject.Inject -import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds import kotlin.time.ExperimentalTime import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +@OptIn(ExperimentalTime::class) @AndroidEntryPoint class DecryptActivityV2 : BasePgpActivity() { @@ -90,10 +91,9 @@ class DecryptActivityV2 : BasePgpActivity() { * Automatically finishes the activity 60 seconds after decryption succeeded to prevent * information leaks from stale activities. */ - @OptIn(ExperimentalTime::class) private fun startAutoDismissTimer() { lifecycleScope.launch { - delay(Duration.seconds(60)) + delay(60.seconds) finish() } } @@ -198,12 +198,7 @@ class DecryptActivityV2 : BasePgpActivity() { binding.recyclerView.adapter = adapter if (entry.hasTotp()) { - lifecycleScope.launch { - entry - .totp - .onEach { code -> withContext(Dispatchers.Main) { adapter.updateOTPCode(code) } } - .collect() - } + entry.totp.onEach(adapter::updateOTPCode).launchIn(lifecycleScope) } } |
