From e7b2cc9df1f486ca35e1368779044af55843b015 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Sun, 25 Dec 2022 15:16:14 -0800 Subject: [PATCH 1/4] hack: trim whitespace on stored keys Noticed a crash when I accidently logged in with whitespace in the keys. We should probably not save keys with whitespace in them, this is just a hack for now. --- damus/Util/Keys.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/damus/Util/Keys.swift b/damus/Util/Keys.swift index 9bc318a8..6f797f83 100644 --- a/damus/Util/Keys.swift +++ b/damus/Util/Keys.swift @@ -133,7 +133,8 @@ func get_saved_pubkey() -> String? { } func get_saved_privkey() -> String? { - try? Vault.getPrivateKey(keychainConfiguration: DamusKeychainConfiguration()) + let mkey = try? Vault.getPrivateKey(keychainConfiguration: DamusKeychainConfiguration()); + return mkey.map { $0.trimmingCharacters(in: .whitespaces) } } fileprivate func removePrivateKeyFromUserDefaults() throws { From 2f0bf20845addeacce5bebdd821626dc109cac2f Mon Sep 17 00:00:00 2001 From: Yuki Kishimoto Date: Mon, 26 Dec 2022 01:54:50 +0100 Subject: [PATCH 2/4] profile: save lnaddress to lud16 instead of lud06 and vice versa --- damus/Views/EditMetadataView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/damus/Views/EditMetadataView.swift b/damus/Views/EditMetadataView.swift index 9513a7d1..f5e9f735 100644 --- a/damus/Views/EditMetadataView.swift +++ b/damus/Views/EditMetadataView.swift @@ -84,8 +84,8 @@ struct EditMetadataView: View { website: website, nip05: nip05.isEmpty ? nil : nip05, picture: picture.isEmpty ? nil : picture, - lud06: ln.contains("@") ? ln : nil, - lud16: ln.contains("@") ? nil : ln + lud06: ln.contains("@") ? nil : ln, + lud16: ln.contains("@") ? ln : nil ); let m_metadata_ev = make_metadata_event(keypair: damus_state.keypair, metadata: metadata) From 29915aa8fe9f4d2baeab830317e87581fc079817 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Sun, 25 Dec 2022 20:27:04 -0800 Subject: [PATCH 3/4] ln: always make an lnurl link instead of lnaddr Changelog-Fixed: Fix lightning tip button sometimes not working --- damus/Nostr/Nostr.swift | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/damus/Nostr/Nostr.swift b/damus/Nostr/Nostr.swift index 6526b88b..909cb3f6 100644 --- a/damus/Nostr/Nostr.swift +++ b/damus/Nostr/Nostr.swift @@ -57,13 +57,25 @@ struct Profile: Codable { set(s) { value["lud16"] = s } } + var lnurl: String? { + guard let addr = lud06 ?? lud16 else { + return nil; + } + + if addr.contains("@") { + return lnaddress_to_lnurl(addr); + } + + return addr; + } + var nip05: String? { get { return value["nip05"]; } set(s) { value["nip05"] = s } } var lightning_uri: URL? { - return make_ln_url(self.lud06) ?? make_ln_url(self.lud16) + return make_ln_url(self.lnurl) } init(from decoder: Decoder) throws { @@ -110,3 +122,17 @@ struct NostrSubscription { let sub_id: String let filter: NostrFilter } + +func lnaddress_to_lnurl(_ lnaddr: String) -> String? { + let parts = lnaddr.split(separator: "@") + guard parts.count == 2 else { + return nil + } + + let url = "https://\(parts[1])/.well-known/lnurlp/\(parts[0])"; + guard let dat = url.data(using: .utf8) else { + return nil + } + + return bech32_encode(hrp: "lnurl", Array(dat)) +} From 8964a5941e2e69707ab9bc22265528270eff2c7d Mon Sep 17 00:00:00 2001 From: William Casarin Date: Sun, 25 Dec 2022 20:28:58 -0800 Subject: [PATCH 4/4] lightning: long press/right click to copy lnurl Changelog-Added: Long press lightning tip button to copy lnurl --- damus/Views/ProfileView.swift | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/damus/Views/ProfileView.swift b/damus/Views/ProfileView.swift index 4b0ccf82..c5be608e 100644 --- a/damus/Views/ProfileView.swift +++ b/damus/Views/ProfileView.swift @@ -124,7 +124,7 @@ struct ProfileView: View { //@EnvironmentObject var profile: ProfileModel - func LNButton(_ url: URL) -> some View { + func LNButton(_ url: URL, profile: Profile) -> some View { Button(action: { UIApplication.shared.open(url) }) { @@ -132,6 +132,13 @@ struct ProfileView: View { .symbolRenderingMode(.palette) .font(.system(size: 34).weight(.thin)) .foregroundStyle(colorScheme == .light ? .black : .white, colorScheme == .light ? .black.opacity(0.1) : .white.opacity(0.2)) + .contextMenu { + Button { + UIPasteboard.general.string = profile.lnurl ?? "" + } label: { + Label("Copy LNUrl", systemImage: "doc.on.doc") + } + } } } @@ -156,8 +163,10 @@ struct ProfileView: View { Spacer() - if let lnuri = data?.lightning_uri { - LNButton(lnuri) + if let profile = data { + if let lnuri = profile.lightning_uri { + LNButton(lnuri, profile: profile) + } } DMButton