Cached relay metadata
This commit is contained in:
@@ -37,7 +37,7 @@ struct RecommendedRelayView: View {
|
||||
guard let ev_after_add = add_relay(ev: ev_before_add, privkey: privkey, current_relays: damus.pool.descriptors, relay: relay, info: .rw) else {
|
||||
return
|
||||
}
|
||||
process_contact_event(pool: damus.pool, contacts: damus.contacts, pubkey: damus.pubkey, ev: ev_after_add)
|
||||
process_contact_event(state: damus, ev: ev_after_add)
|
||||
damus.pool.send(.event(ev_after_add))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ struct RelayConfigView: View {
|
||||
return
|
||||
}
|
||||
|
||||
process_contact_event(pool: state.pool, contacts: state.contacts, pubkey: state.pubkey, ev: ev)
|
||||
process_contact_event(state: state, ev: ev)
|
||||
|
||||
state.pool.send(.event(new_ev))
|
||||
}
|
||||
|
||||
@@ -10,10 +10,9 @@ import SwiftUI
|
||||
struct RelayDetailView: View {
|
||||
let state: DamusState
|
||||
let relay: String
|
||||
let nip11: RelayMetadata
|
||||
|
||||
@State private var errorString: String?
|
||||
@State private var nip11: RelayMetadata?
|
||||
|
||||
@State var conn_color: Color
|
||||
|
||||
@Environment(\.dismiss) var dismiss
|
||||
@@ -69,39 +68,7 @@ struct RelayDetailView: View {
|
||||
.onReceive(handle_notify(.switched_timeline)) { notif in
|
||||
dismiss()
|
||||
}
|
||||
.navigationTitle(nip11?.name ?? "")
|
||||
.task {
|
||||
var urlString = relay.replacingOccurrences(of: "wss://", with: "https://")
|
||||
urlString = urlString.replacingOccurrences(of: "ws://", with: "http://")
|
||||
|
||||
guard let url = URL(string: urlString) else {
|
||||
return
|
||||
}
|
||||
|
||||
var request = URLRequest(url: url)
|
||||
request.setValue("application/nostr+json", forHTTPHeaderField: "Accept")
|
||||
|
||||
var res: (Data, URLResponse)? = nil
|
||||
|
||||
do {
|
||||
res = try await URLSession.shared.data(for: request)
|
||||
} catch {
|
||||
errorString = error.localizedDescription
|
||||
return
|
||||
}
|
||||
|
||||
guard let data = res?.0 else {
|
||||
errorString = "Relay not responding to metadata request"
|
||||
return
|
||||
}
|
||||
|
||||
do {
|
||||
let nip11 = try JSONDecoder().decode(RelayMetadata.self, from: data)
|
||||
self.nip11 = nip11
|
||||
} catch {
|
||||
errorString = error.localizedDescription
|
||||
}
|
||||
}
|
||||
.navigationTitle(nip11.name ?? "")
|
||||
}
|
||||
|
||||
private func nipsList(nips: [Int]) -> AttributedString {
|
||||
@@ -124,6 +91,7 @@ struct RelayDetailView: View {
|
||||
|
||||
struct RelayDetailView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
RelayDetailView(state: test_damus_state(), relay: "wss://nostr.klabo.blog", conn_color: .green)
|
||||
let metadata = RelayMetadata(name: "name", description: "desc", pubkey: "pubkey", contact: "contact", supported_nips: [1,2,3], software: "software", version: "version")
|
||||
RelayDetailView(state: test_damus_state(), relay: "relay", nip11: metadata, conn_color: .green)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,13 @@ struct RelayView: View {
|
||||
Circle()
|
||||
.frame(width: 8.0, height: 8.0)
|
||||
.foregroundColor(conn_color)
|
||||
NavigationLink {
|
||||
RelayDetailView(state: state, relay: relay, conn_color: conn_color)
|
||||
} label: {
|
||||
if let meta = state.relay_metadata.lookup(relay_id: relay) {
|
||||
NavigationLink {
|
||||
RelayDetailView(state: state, relay: relay, nip11: meta, conn_color: conn_color)
|
||||
} label: {
|
||||
Text(relay)
|
||||
}
|
||||
} else {
|
||||
Text(relay)
|
||||
}
|
||||
}
|
||||
@@ -79,7 +83,7 @@ struct RelayView: View {
|
||||
return
|
||||
}
|
||||
|
||||
process_contact_event(pool: state.pool, contacts: state.contacts, pubkey: state.pubkey, ev: new_ev)
|
||||
process_contact_event(state: state, ev: new_ev)
|
||||
state.pool.send(.event(new_ev))
|
||||
} label: {
|
||||
Label(NSLocalizedString("Delete", comment: "Button to delete a relay server that the user connects to."), systemImage: "trash")
|
||||
|
||||
Reference in New Issue
Block a user