relays: fix tld extraction performance issues
This uses a simpler variant that doesn't require a library. It is also much faster and doesn't cause a delay when you open the relay view. Not sure why I needed to touch other parts of the code to make the build work. Probably xcode beta thing?
This commit is contained in:
@@ -42,7 +42,7 @@ struct RecommendedRelayView: View {
|
|||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
HStack {
|
HStack {
|
||||||
Text(meta?.name ?? relay.hostname ?? relay)
|
Text(meta?.name ?? relay)
|
||||||
.font(.headline)
|
.font(.headline)
|
||||||
.padding(.bottom, 2)
|
.padding(.bottom, 2)
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ struct RecommendedRelayView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HStack {
|
HStack {
|
||||||
Text(meta?.name ?? relay.hostname ?? relay)
|
Text(meta?.name ?? relay)
|
||||||
.lineLimit(1)
|
.lineLimit(1)
|
||||||
}
|
}
|
||||||
.contextMenu {
|
.contextMenu {
|
||||||
|
|||||||
@@ -7,13 +7,12 @@
|
|||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
import Kingfisher
|
import Kingfisher
|
||||||
import TLDExtract
|
|
||||||
|
|
||||||
struct FailedRelayImage: View {
|
struct FailedRelayImage: View {
|
||||||
let url: URL?
|
let url: URL?
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
let abbrv = String(url?.hostname?.first?.uppercased() ?? "R")
|
let abbrv = String(url?.host()?.first?.uppercased() ?? "R")
|
||||||
Text("\(abbrv)")
|
Text("\(abbrv)")
|
||||||
.font(.system(size: 40, weight: .bold))
|
.font(.system(size: 40, weight: .bold))
|
||||||
}
|
}
|
||||||
@@ -90,11 +89,28 @@ struct RelayPicView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func extract_tld(_ host: String) -> String {
|
||||||
|
let parts = host.split(separator: ".")
|
||||||
|
|
||||||
|
if parts.count >= 3 {
|
||||||
|
let last_3 = parts.suffix(3)
|
||||||
|
if parts[1] == "co" && parts[2] == "uk" {
|
||||||
|
return String(last_3.joined(separator: "."))
|
||||||
|
} else {
|
||||||
|
return String(parts.suffix(2).joined(separator: "."))
|
||||||
|
}
|
||||||
|
} else if parts.count == 2 {
|
||||||
|
return host
|
||||||
|
}
|
||||||
|
|
||||||
|
return host
|
||||||
|
}
|
||||||
|
|
||||||
func get_relay_url(relay: String, icon: String?) -> URL? {
|
func get_relay_url(relay: String, icon: String?) -> URL? {
|
||||||
let extractor = TLDExtract()
|
|
||||||
var favicon = relay + "/favicon.ico"
|
var favicon = relay + "/favicon.ico"
|
||||||
if let parseRelay: TLDResult = extractor.parse(relay) {
|
let tld = extract_tld(relay)
|
||||||
favicon = "https://" + (parseRelay.rootDomain ?? relay) + "/favicon.ico"
|
if tld != relay {
|
||||||
|
favicon = "https://" + tld + "/favicon.ico"
|
||||||
}
|
}
|
||||||
let pic = icon ?? favicon
|
let pic = icon ?? favicon
|
||||||
return URL(string: pic)
|
return URL(string: pic)
|
||||||
|
|||||||
Reference in New Issue
Block a user