From 110c9dad4a15a3d1de47bc83bd487b9e09bce27f Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Tue, 9 Apr 2024 13:04:09 -0700 Subject: [PATCH] Multiline timezone field handle nil in firmware web methods --- .../Views/Settings/Config/DeviceConfig.swift | 3 ++- Meshtastic/Views/Settings/FirmwareApi.swift | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Meshtastic/Views/Settings/Config/DeviceConfig.swift b/Meshtastic/Views/Settings/Config/DeviceConfig.swift index cc4ee5ec..68596dab 100644 --- a/Meshtastic/Views/Settings/Config/DeviceConfig.swift +++ b/Meshtastic/Views/Settings/Config/DeviceConfig.swift @@ -90,7 +90,7 @@ struct DeviceConfig: View { VStack(alignment: .leading) { HStack { Label("Time Zone", systemImage: "clock.badge.exclamationmark") - TextField("Time Zone", text: $tzdef) + TextField("Time Zone", text: $tzdef, axis: .vertical) .foregroundColor(.gray) .onChange(of: tzdef, perform: { _ in let totalBytes = tzdef.utf8.count @@ -100,6 +100,7 @@ struct DeviceConfig: View { } }) .foregroundColor(.gray) + } .keyboardType(.default) .disableAutocorrection(true) diff --git a/Meshtastic/Views/Settings/FirmwareApi.swift b/Meshtastic/Views/Settings/FirmwareApi.swift index fe9b5128..e4de909c 100644 --- a/Meshtastic/Views/Settings/FirmwareApi.swift +++ b/Meshtastic/Views/Settings/FirmwareApi.swift @@ -58,6 +58,15 @@ class Api : ObservableObject{ DispatchQueue.main.async { completion(deviceHardware) } + + if let data = data { + if let deviceHardware = try? JSONDecoder().decode([DeviceHardware].self, from: data) { + DispatchQueue.main.async { + completion(deviceHardware) + } + return + } + } }.resume() } @@ -67,9 +76,13 @@ class Api : ObservableObject{ return } URLSession.shared.dataTask(with: url) { data, response, error in - let firmwareReleases = try! JSONDecoder().decode(FirmwareReleases.self, from: data!) - DispatchQueue.main.async { - completion(firmwareReleases) + if let data = data { + if let firmwareReleases = try? JSONDecoder().decode(FirmwareReleases.self, from: data) { + DispatchQueue.main.async { + completion(firmwareReleases) + } + return + } } }.resume() }