From 2e218c0ee9c78cbf961ec5866e1f90ce1529cda4 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 22 Feb 2023 15:57:23 -0800 Subject: [PATCH] Connect view updates --- Meshtastic/Views/Bluetooth/Connect.swift | 55 +++++++++++++++++------- 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/Meshtastic/Views/Bluetooth/Connect.swift b/Meshtastic/Views/Bluetooth/Connect.swift index 0f7affb4..5b7cc29c 100644 --- a/Meshtastic/Views/Bluetooth/Connect.swift +++ b/Meshtastic/Views/Bluetooth/Connect.swift @@ -21,6 +21,8 @@ struct Connect: View { @State var isPreferredRadio: Bool = false @State var isUnsetRegion = false @State var invalidFirmwareVersion = false + @State var isPresentingPreferredPeripherialDialog = false + @State var showDialogForNextPeripherialChange = true var body: some View { @@ -61,23 +63,44 @@ struct Connect: View { Toggle("preferred.radio", isOn: $bleManager.preferredPeripheral) .toggleStyle(SwitchToggleStyle(tint: .accentColor)) .labelsHidden() + .confirmationDialog( + "Are you sure? Switching your preferred peripheral will clear all app data from the phone.", + isPresented: $isPresentingPreferredPeripherialDialog, + titleVisibility: .visible + ) { + Button("Confirm", role: .destructive) { + + if bleManager.preferredPeripheral { + if bleManager.connectedPeripheral != nil { + userSettings.preferredPeripheralId = bleManager.connectedPeripheral!.peripheral.identifier.uuidString + userSettings.preferredNodeNum = bleManager.connectedPeripheral!.num + bleManager.preferredPeripheral = true + isPreferredRadio = true + showDialogForNextPeripherialChange = false + } + } else { + + if bleManager.connectedPeripheral != nil && bleManager.connectedPeripheral.peripheral.identifier.uuidString == userSettings.preferredPeripheralId { + userSettings.preferredPeripheralId = "" + userSettings.preferredNodeNum = 0 + bleManager.preferredPeripheral = false + isPreferredRadio = false + } + } + bleManager.disconnectPeripheral() + clearCoreDataDatabase(context: context) + } + Button("Cancel", role: .cancel) { + showDialogForNextPeripherialChange = false + bleManager.preferredPeripheral = !bleManager.preferredPeripheral + } + } .onChange(of: bleManager.preferredPeripheral) { value in - if value { - if bleManager.connectedPeripheral != nil { - userSettings.preferredPeripheralId = bleManager.connectedPeripheral!.peripheral.identifier.uuidString - userSettings.preferredNodeNum = bleManager.connectedPeripheral!.num - bleManager.preferredPeripheral = true - isPreferredRadio = true - } - } else { - - if bleManager.connectedPeripheral != nil && bleManager.connectedPeripheral.peripheral.identifier.uuidString == userSettings.preferredPeripheralId { - - userSettings.preferredPeripheralId = "" - userSettings.preferredNodeNum = 0 - bleManager.preferredPeripheral = false - isPreferredRadio = false - } + + if showDialogForNextPeripherialChange { + isPresentingPreferredPeripherialDialog = true + } else { + showDialogForNextPeripherialChange = true } } }