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/data | |
| 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/data')
| -rw-r--r-- | app/src/main/java/dev/msfjarvis/aps/data/password/FieldItem.kt | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/data/password/FieldItem.kt b/app/src/main/java/dev/msfjarvis/aps/data/password/FieldItem.kt index 5b4931e7..e7c88ef1 100644 --- a/app/src/main/java/dev/msfjarvis/aps/data/password/FieldItem.kt +++ b/app/src/main/java/dev/msfjarvis/aps/data/password/FieldItem.kt @@ -5,31 +5,39 @@ package dev.msfjarvis.aps.data.password +import dev.msfjarvis.aps.data.passfile.Totp +import kotlin.time.ExperimentalTime + +@OptIn(ExperimentalTime::class) class FieldItem(val key: String, val value: String, val action: ActionType) { enum class ActionType { COPY, HIDE } - enum class ItemType(val type: String) { - USERNAME("Username"), - PASSWORD("Password"), - OTP("OTP") + enum class ItemType(val type: String, val label: String) { + USERNAME("Username", "Username"), + PASSWORD("Password", "Password"), + OTP("OTP", "OTP (expires in %ds)"), } companion object { // Extra helper methods - fun createOtpField(otp: String): FieldItem { - return FieldItem(ItemType.OTP.type, otp, ActionType.COPY) + fun createOtpField(totp: Totp): FieldItem { + return FieldItem( + ItemType.OTP.label.format(totp.remainingTime.inWholeSeconds), + totp.value, + ActionType.COPY, + ) } fun createPasswordField(password: String): FieldItem { - return FieldItem(ItemType.PASSWORD.type, password, ActionType.HIDE) + return FieldItem(ItemType.PASSWORD.label, password, ActionType.HIDE) } fun createUsernameField(username: String): FieldItem { - return FieldItem(ItemType.USERNAME.type, username, ActionType.COPY) + return FieldItem(ItemType.USERNAME.label, username, ActionType.COPY) } } } |
