diff --git a/Shared/BLEDeviceModel.swift b/Shared/BLEDeviceModel.swift index 9def9ce..e0ee163 100644 --- a/Shared/BLEDeviceModel.swift +++ b/Shared/BLEDeviceModel.swift @@ -14,18 +14,16 @@ class BLEDeviceModel: NSObject, ObservableObject, CBPeripheralDelegate { @Published private(set) var hasTemperatureSupport = false @Published private(set) var hasHumiditySupport = false - @Published private(set) var lastSynced: Date? = nil - @Published private(set) var batteryPercentage: Int? = nil @Published private(set) var currentTime: Date? = nil @Published private(set) var currentTemperature: Double? = nil @Published private(set) var currentHumidity: Int? = nil + @Published private(set) var name: String + private var _peripheral: CBPeripheral // MARK: Wrappers for CBPeripheral fields. - - var name: String { peripheral.name ?? "Unknown name" } var identifier: String { peripheral.identifier.uuidString } // get-only wrapper @@ -33,13 +31,12 @@ class BLEDeviceModel: NSObject, ObservableObject, CBPeripheralDelegate { required init(_ peripheral: CBPeripheral) { self._peripheral = peripheral + self.name = peripheral.name ?? "Unknown name" super.init() peripheral.delegate = self } func sync() { - lastSynced = Date() - batteryPercentage = nil currentTime = nil @@ -91,8 +88,7 @@ class BLEDeviceModel: NSObject, ObservableObject, CBPeripheralDelegate { } func peripheralDidUpdateName(_ peripheral: CBPeripheral) { - objectWillChange.send() - DateFormatter().string(from: lastSynced!) + self.name = peripheral.name ?? "Unknown name" } func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { diff --git a/Shared/Views/ContentView.swift b/Shared/Views/ContentView.swift index 282ba3f..8167d6b 100644 --- a/Shared/Views/ContentView.swift +++ b/Shared/Views/ContentView.swift @@ -24,21 +24,16 @@ struct ContentView: View { } } .toolbar { - if bleClient.scanning { - Button(action: { + Button(action: { + if bleClient.scanning { bleClient.stopScan() - }) { - Image(systemName: "stop.circle.fill") - } - ProgressView().controlSize(.small) - } else { - Button(action: { + } else { bleClient.triggerScan() - }) { - Image(systemName: "arrow.clockwise") } + }) { + Image(systemName: bleClient.scanning ? "stop.circle.fill" : "arrow.clockwise") } - } + }.navigationTitle("Discovered Devices") }.environmentObject(bleClient) .onDisappear { bleClient.stopScan() diff --git a/Shared/Views/DeviceView.swift b/Shared/Views/DeviceView.swift index fd4dbc4..a5cc0a1 100644 --- a/Shared/Views/DeviceView.swift +++ b/Shared/Views/DeviceView.swift @@ -59,10 +59,7 @@ struct DeviceView: View { } } - GroupBox(label: Text("Device information and discovered capabilities")) { - - Text("\(peripheral.name) - \(peripheral.identifier)").font(.callout) - + GroupBox(label: Text("Discovered capabilities")) { VStack(alignment: .leading) { HStack { Image(systemName: peripheral.hasTimeSupport ? "checkmark.circle.fill" : "xmark.circle") @@ -86,12 +83,6 @@ struct DeviceView: View { }.padding() }.padding() }.toolbar { - if let lastSynced = peripheral.lastSynced { - Text(lastSynced, style: .relative).font(.footnote) - } else { - Text("Not synced") - } - Button(action: { peripheral.sync() }) { @@ -122,12 +113,12 @@ struct DeviceView: View { Text("Sync with device") } }.padding() - } + }.navigationTitle(peripheral.name) } } // struct DeviceView_Previews: PreviewProvider { // static var previews: some View { -// DeviceView() +// DeviceView(peripheral: BLEDeviceModel()) // } // }