ln: always make an lnurl link instead of lnaddr
Changelog-Fixed: Fix lightning tip button sometimes not working
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user