damus

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

commit b2ee44c0ab992c12456eec53224b7a7d6db29fc7
parent a696ac50841bd4d1339de1315100867ab5e02d4a
Author: Terry Yiu <git@tyiu.xyz>
Date:   Sun, 16 Feb 2025 22:52:35 -0500

Trim whitespaces from Lightning addresses

Changelog-Fixed: Trim whitespaces from Lightning addresses
Signed-off-by: Terry Yiu <git@tyiu.xyz>

Diffstat:
Mdamus/Nostr/Nostr.swift | 5+++--
Mdamus/Views/Profile/EditMetadataView.swift | 3+++
Mdamus/Views/Zaps/ProfileZapLinkView.swift | 17+++++++++--------
3 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/damus/Nostr/Nostr.swift b/damus/Nostr/Nostr.swift @@ -31,7 +31,8 @@ class ProfileRecord { } guard let profile = data.profile, - let addr = profile.lud16 ?? profile.lud06 else { + let addr = (profile.lud16 ?? profile.lud06)?.trimmingCharacters(in: .whitespaces) + else { return nil; } @@ -301,7 +302,7 @@ class Profile: Codable { */ func make_test_profile() -> Profile { - return Profile(name: "jb55", display_name: "Will", about: "Its a me", picture: "https://cdn.jb55.com/img/red-me.jpg", banner: "https://pbs.twimg.com/profile_banners/9918032/1531711830/600x200", website: "jb55.com", lud06: "jb55@jb55.com", lud16: nil, nip05: "jb55@jb55.com", damus_donation: 1) + return Profile(name: "jb55", display_name: "Will", about: "Its a me", picture: "https://cdn.jb55.com/img/red-me.jpg", banner: "https://pbs.twimg.com/profile_banners/9918032/1531711830/600x200", website: "jb55.com", lud06: nil, lud16: "jb55@jb55.com", nip05: "jb55@jb55.com", damus_donation: 1) } func make_ln_url(_ str: String?) -> URL? { diff --git a/damus/Views/Profile/EditMetadataView.swift b/damus/Views/Profile/EditMetadataView.swift @@ -170,6 +170,9 @@ struct EditMetadataView: View { TextField(NSLocalizedString("Lightning Address or LNURL", comment: "Placeholder text for entry of Lightning Address or LNURL."), text: $ln) .autocorrectionDisabled(true) .textInputAutocapitalization(.never) + .onReceive(Just(ln)) { newValue in + self.ln = newValue.trimmingCharacters(in: .whitespaces) + } } Section(content: { diff --git a/damus/Views/Zaps/ProfileZapLinkView.swift b/damus/Views/Zaps/ProfileZapLinkView.swift @@ -24,8 +24,8 @@ struct ProfileZapLinkView<Content: View>: View { self.label = label self.action = action self.reactions_enabled = reactions_enabled - self.lud16 = lud16 - self.lnurl = lnurl + self.lud16 = lud16?.trimmingCharacters(in: .whitespaces) + self.lnurl = lnurl?.trimmingCharacters(in: .whitespaces) } init(damus_state: DamusState, pubkey: Pubkey, action: ActionFunction? = nil, @ViewBuilder label: @escaping ContentViewFunction) { @@ -36,8 +36,8 @@ struct ProfileZapLinkView<Content: View>: View { let profile_txn = damus_state.profiles.lookup_with_timestamp(pubkey) let record = profile_txn?.unsafeUnownedValue self.reactions_enabled = record?.profile?.reactions ?? true - self.lud16 = record?.profile?.lud06 - self.lnurl = record?.lnurl + self.lud16 = record?.profile?.lud06?.trimmingCharacters(in: .whitespaces) + self.lnurl = record?.lnurl?.trimmingCharacters(in: .whitespaces) } init(unownedProfileRecord: ProfileRecord?, profileModel: ProfileModel, action: ActionFunction? = nil, @ViewBuilder label: @escaping ContentViewFunction) { @@ -46,8 +46,8 @@ struct ProfileZapLinkView<Content: View>: View { self.action = action self.reactions_enabled = unownedProfileRecord?.profile?.reactions ?? true - self.lud16 = unownedProfileRecord?.profile?.lud16 - self.lnurl = unownedProfileRecord?.lnurl + self.lud16 = unownedProfileRecord?.profile?.lud16?.trimmingCharacters(in: .whitespaces) + self.lnurl = unownedProfileRecord?.lnurl?.trimmingCharacters(in: .whitespaces) } var body: some View { @@ -81,12 +81,13 @@ struct ProfileZapLinkView<Content: View>: View { } } } - .disabled(lnurl == nil) + .disabled(lnurl == nil && lud16 == nil) } } #Preview { - ProfileZapLinkView(pubkey: test_pubkey, reactions_enabled: true, lud16: make_test_profile().lud16, lnurl: "test@sendzaps.lol", label: { reactions_enabled, lud16, lnurl in + let profile = make_test_profile() + ProfileZapLinkView(pubkey: test_pubkey, reactions_enabled: true, lud16: profile.lud16, lnurl: profile.lud06, label: { reactions_enabled, lud16, lnurl in Image("zap.fill") }) }