ln: always make an lnurl link instead of lnaddr

Changelog-Fixed: Fix lightning tip button sometimes not working
This commit is contained in:
William Casarin
2022-12-25 20:27:04 -08:00
parent 2f0bf20845
commit 29915aa8fe

View File

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