commit f71b67f0365d52f47478ac289202f1518ce9917d
parent ae6608cf7d148a770d42ac96ac896a184f79106c
Author: William Casarin <jb55@jb55.com>
Date:   Tue,  7 Feb 2023 09:56:46 -0800
relays: refactor
Diffstat:
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