From e90ad86946cbcc0f38759bf13b61c5dcb9e58bb8 Mon Sep 17 00:00:00 2001 From: Svens Jansons Date: Thu, 8 Jul 2021 18:50:41 +0300 Subject: [PATCH] Displaying Secret Key in Edit Token section --- Authenticator/Source/TokenEditForm.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Authenticator/Source/TokenEditForm.swift b/Authenticator/Source/TokenEditForm.swift index 8fbabd9a..efc906c1 100644 --- a/Authenticator/Source/TokenEditForm.swift +++ b/Authenticator/Source/TokenEditForm.swift @@ -24,12 +24,14 @@ // import OneTimePassword +import Base32 struct TokenEditForm: Component { private let persistentToken: PersistentToken private var issuer: String private var name: String + private var secret: String private var isValid: Bool { return !(issuer.isEmpty && name.isEmpty) @@ -39,6 +41,7 @@ struct TokenEditForm: Component { init(persistentToken: PersistentToken) { self.persistentToken = persistentToken + secret = MF_Base32Codec.base32String(from: persistentToken.token.generator.secret) issuer = persistentToken.token.issuer name = persistentToken.token.name } @@ -52,6 +55,7 @@ extension TokenEditForm: TableViewModelRepresentable { case name(String) case cancel case submit + case secret(String) } typealias HeaderModel = TokenFormHeaderModel @@ -70,6 +74,7 @@ extension TokenEditForm { rightBarButton: BarButtonViewModel(style: .done, action: .submit, enabled: isValid), sections: [ [ + tokenRowModel, issuerRowModel, nameRowModel, ], @@ -78,6 +83,16 @@ extension TokenEditForm { ) } + private var tokenRowModel: RowModel { + return .textFieldRow( + identity: "token.secret", + viewModel: TextFieldRowViewModel( + secret: secret, + changeAction: Action.secret + ) + ) + } + private var issuerRowModel: RowModel { return .textFieldRow( identity: "token.issuer", @@ -112,6 +127,8 @@ extension TokenEditForm { mutating func update(with action: Action) -> Effect? { switch action { + case let .secret(secret): + self.secret = secret case let .issuer(issuer): self.issuer = issuer case let .name(name):