Browse Source

ln: always make an lnurl link instead of lnaddr

Changelog-Fixed: Fix lightning tip button sometimes not working
post-button-style
William Casarin 2 years ago
parent
commit
29915aa8fe
  1. 28
      damus/Nostr/Nostr.swift

28
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))
}

Loading…
Cancel
Save