diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 8fddb80a..f3718afc 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -645,6 +645,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate do { disconnectPeripheral(reconnect: false) try container.restorePersistentStore(from: databasePath) + context?.refreshAllObjects() let request = MyInfoEntity.fetchRequest() try context?.fetch(request) UserDefaults.preferredPeripheralNum = Int(myInfo?.myNodeNum ?? 0) diff --git a/Meshtastic/Views/Nodes/Helpers/NodeListFilter.swift b/Meshtastic/Views/Nodes/Helpers/NodeListFilter.swift index 15f8f712..247cb954 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeListFilter.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeListFilter.swift @@ -11,7 +11,6 @@ import SwiftUI struct NodeListFilter: View { @Environment(\.dismiss) private var dismiss @State var editMode = EditMode.active - /// Filters var filterTitle = "Node Filters" @Binding var viaLora: Bool @Binding var viaMqtt: Bool @@ -130,8 +129,6 @@ struct NodeListFilter: View { } } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - - .listRowSeparator(roleFilter ? .hidden : .visible) if roleFilter { VStack { List(DeviceRoles.allCases, selection: $deviceRoles) { dr in diff --git a/Meshtastic/Views/Nodes/NodeList.swift b/Meshtastic/Views/Nodes/NodeList.swift index 81c034cc..d9574f43 100644 --- a/Meshtastic/Views/Nodes/NodeList.swift +++ b/Meshtastic/Views/Nodes/NodeList.swift @@ -284,37 +284,55 @@ struct NodeList: View { } .navigationSplitViewStyle(.balanced) .onChange(of: searchText) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: viaLora) { _ in if !viaLora && !viaMqtt { viaMqtt = true } - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: viaMqtt) { _ in if !viaLora && !viaMqtt { viaLora = true } - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: [deviceRoles]) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: hopsAway) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: isOnline) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: isFavorite) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: maxDistance) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: distanceFilter) { _ in - searchNodeList() + Task { + await searchNodeList() + } } .onChange(of: (appState.navigationPath)) { newPath in @@ -339,11 +357,13 @@ struct NodeList: View { if self.bleManager.context == nil { self.bleManager.context = context } - searchNodeList() + Task { + await searchNodeList() + } } } - private func searchNodeList() { + private func searchNodeList() async -> Void { /// Case Insensitive Search Text Predicates let searchPredicates = ["user.userId", "user.numString", "user.hwModel", "user.longName", "user.shortName"].map { property in return NSPredicate(format: "%K CONTAINS[c] %@", property, searchText)