From 2f034bc2372d29b4ddebf74d532279073fb3d92b Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 11 Mar 2022 01:52:39 +0530 Subject: 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 --- .../dev/msfjarvis/aps/data/password/FieldItem.kt | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'app/src/main/java/dev/msfjarvis/aps/data/password') 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) } } } -- cgit v1.2.3