damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit f71b67f0365d52f47478ac289202f1518ce9917d
parent ae6608cf7d148a770d42ac96ac896a184f79106c
Author: William Casarin <jb55@jb55.com>
Date:   Tue,  7 Feb 2023 09:56:46 -0800

relays: refactor

Diffstat:
Mdamus/Nostr/Relay.swift | 16++++++++--------
Mdamus/Views/Relays/RelayDetailView.swift | 30+++++++++++++++++++-----------
2 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/damus/Nostr/Relay.swift b/damus/Nostr/Relay.swift @@ -24,14 +24,14 @@ enum RelayFlags: Int { case broken = 1 } -struct RelayNIP11: Codable { - var name = "No data available" - var description = "No data available" - var pubkey = "No data available" - var contact = "No data available" - var supported_nips: [Int] = [] - var software = "No data available" - var version = "No data available" +struct RelayMetadata: Codable { + let name: String? + let description: String? + let pubkey: String? + let contact: String? + let supported_nips: [Int]? + let software: String? + let version: String? } class Relay: Identifiable { diff --git a/damus/Views/Relays/RelayDetailView.swift b/damus/Views/Relays/RelayDetailView.swift @@ -12,16 +12,22 @@ struct RelayDetailView: View { let relay: String @State private var errorString: String? - @State private var nip11: RelayNIP11? + @State private var nip11: RelayMetadata? @State var conn_color: Color - + + func FieldText(_ str: String?) -> some View { + Text(str ?? "No data available") + } + var body: some View { Group { if let nip11 { Form { - Section(NSLocalizedString("Admin", comment: "Label to display relay contact user.")) { - UserView(damus_state: state, pubkey: nip11.pubkey) + if let pubkey = nip11.pubkey { + Section(NSLocalizedString("Admin", comment: "Label to display relay contact user.")) { + UserView(damus_state: state, pubkey: pubkey) + } } Section(NSLocalizedString("Relay", comment: "Label to display relay address.")) { HStack { @@ -33,19 +39,21 @@ struct RelayDetailView: View { } } Section(NSLocalizedString("Description", comment: "Label to display relay description.")) { - Text(nip11.description) + FieldText(nip11.description) } Section(NSLocalizedString("Contact", comment: "Label to display relay contact information.")) { - Text(nip11.contact) + FieldText(nip11.contact) } Section(NSLocalizedString("Software", comment: "Label to display relay software.")) { - Text(nip11.software) + FieldText(nip11.software) } Section(NSLocalizedString("Version", comment: "Label to display relay software version.")) { - Text(nip11.version) + FieldText(nip11.version) } - Section(NSLocalizedString("Supported NIPs", comment: "Label to display relay's supported NIPs.")) { - Text(nipsList(nips: nip11.supported_nips)) + if let nips = nip11.supported_nips, nips.count > 0 { + Section(NSLocalizedString("Supported NIPs", comment: "Label to display relay's supported NIPs.")) { + Text(nipsList(nips: nips)) + } } } } else if let errorString { @@ -83,7 +91,7 @@ struct RelayDetailView: View { } do { - let nip11 = try JSONDecoder().decode(RelayNIP11.self, from: data) + let nip11 = try JSONDecoder().decode(RelayMetadata.self, from: data) self.nip11 = nip11 } catch { errorString = error.localizedDescription