damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit 49e683e10df8eb22fad344c98abfb345702c7d63
parent 8d7ffb90963038fefb4cac3aabc1ac81beb1ae7c
Author: William Casarin <jb55@jb55.com>
Date:   Wed, 21 Dec 2022 15:46:44 -0800

switch to buttons for copying keys

Diffstat:
Mdamus/Views/ConfigView.swift | 71+++++++++++++++++++++++++++++++++++++----------------------------------
1 file changed, 37 insertions(+), 34 deletions(-)

diff --git a/damus/Views/ConfigView.swift b/damus/Views/ConfigView.swift @@ -13,12 +13,29 @@ struct ConfigView: View { @State var show_add_relay: Bool = false @State var confirm_logout: Bool = false @State var new_relay: String = "" - @State var showPrivateKey: Bool = false - @State var privateKey: String + @State var show_privkey: Bool = false + @State var privkey: String + @State var privkey_copied: Bool = false + @State var pubkey_copied: Bool = false + + let generator = UIImpactFeedbackGenerator(style: .light) init(state: DamusState) { self.state = state - _privateKey = State(initialValue: self.state.keypair.privkey_bech32 ?? "") + _privkey = State(initialValue: self.state.keypair.privkey_bech32 ?? "") + } + + // TODO: (jb55) could be more general but not gonna worry about it atm + func CopyButton(is_pk: Bool) -> some View { + return Button(action: { + UIPasteboard.general.string = is_pk ? self.state.keypair.pubkey_bech32 : self.privkey + self.privkey_copied = !is_pk + self.pubkey_copied = is_pk + generator.impactOccurred() + }) { + let copied = is_pk ? self.pubkey_copied : self.privkey_copied + Image(systemName: copied ? "checkmark.circle" : "doc.on.doc") + } } var body: some View { @@ -35,43 +52,29 @@ struct ConfigView: View { } Section("Public Account ID") { - Text(state.keypair.pubkey_bech32) - .textSelection(.enabled) - .onTapGesture { - UIPasteboard.general.string = state.keypair.pubkey_bech32 - AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) - } - .clipShape(RoundedRectangle(cornerRadius: 5)) - .gesture( - LongPressGesture(minimumDuration: 1.0) - .onEnded { _ in - UIPasteboard.general.string = state.keypair.pubkey_bech32 - } - ) + HStack { + Text(state.keypair.pubkey_bech32) + + CopyButton(is_pk: true) + } + .clipShape(RoundedRectangle(cornerRadius: 5)) } if let sec = state.keypair.privkey_bech32 { Section("Secret Account Login Key") { - if showPrivateKey == false { - SecureField("PrivateKey", text: $privateKey) - .disabled(true) - } else { - Text(sec) - .textSelection(.enabled) - .onTapGesture { - UIPasteboard.general.string = sec - AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) - } - .clipShape(RoundedRectangle(cornerRadius: 5)) - .gesture( - LongPressGesture(minimumDuration: 1.0) - .onEnded { _ in - UIPasteboard.general.string = sec - } - ) + HStack { + if show_privkey == false { + SecureField("PrivateKey", text: $privkey) + .disabled(true) + } else { + Text(sec) + .clipShape(RoundedRectangle(cornerRadius: 5)) + } + + CopyButton(is_pk: false) } - Toggle("Show PrivateKey", isOn: $showPrivateKey) + Toggle("Show", isOn: $show_privkey) } }