From 03fd74f2cdb8ac152b27e18e4d9cfa5693ea6703 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 29 Oct 2022 07:31:50 -0700 Subject: [PATCH] Improved channel saving logic --- Meshtastic/Helpers/BLEManager.swift | 17 ++++++++--------- Meshtastic/Helpers/MeshPackets.swift | 14 ++++++-------- Meshtastic/Views/Settings/ShareChannels.swift | 19 ++++++++----------- 3 files changed, 22 insertions(+), 28 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index fe2327e4..683deb33 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1066,7 +1066,6 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph let mutableChannels = fetchedMyInfo[0].channels!.mutableCopy() as! NSMutableOrderedSet mutableChannels.removeAllObjects() fetchedMyInfo[0].channels = mutableChannels - fetchedMyInfo[0].objectWillChange.send() do { try context!.save() @@ -1083,19 +1082,19 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph let decodedString = base64UrlString.base64urlToBase64() if let decodedData = Data(base64Encoded: decodedString) { do { - var channelSet: ChannelSet = try ChannelSet(serializedData: decodedData) + let channelSet: ChannelSet = try ChannelSet(serializedData: decodedData) print(channelSet) var i:Int32 = 0 for cs in channelSet.settings { var chan = Channel() - i += 1 - chan.settings = cs - chan.index = i - if i == 1 { + if i == 0 { chan.role = Channel.Role.primary - } else { + } else { chan.role = Channel.Role.secondary } + chan.settings = cs + chan.index = i + i += 1 var adminPacket = AdminMessage() adminPacket.setChannel = chan var meshPacket: MeshPacket = MeshPacket() @@ -1103,8 +1102,8 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph meshPacket.from = 0 //UInt32(connectedPeripheral.num) meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. 0 { print("💥 Trying to save a channel to a MyInfo that does not exist: \(fromNum)") } @@ -1103,7 +1100,7 @@ func positionPacket (packet: MeshPacket, context: NSManagedObjectContext) { } else { print("💥 Empty POSITION_APP Packet") - + print(try! packet.jsonString()) if let dataMessage = try? DataMessage(serializedData: packet.decoded.payload) { print(dataMessage) @@ -1269,6 +1266,7 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM newMessage.messageTimestamp = Int32(bitPattern: packet.rxTime) newMessage.receivedACK = false newMessage.isEmoji = packet.decoded.emoji == 1 + newMessage.channel = Int32(packet.channel) if packet.decoded.replyID > 0 { newMessage.replyID = Int64(packet.decoded.replyID) diff --git a/Meshtastic/Views/Settings/ShareChannels.swift b/Meshtastic/Views/Settings/ShareChannels.swift index 413f3197..7f88867b 100644 --- a/Meshtastic/Views/Settings/ShareChannels.swift +++ b/Meshtastic/Views/Settings/ShareChannels.swift @@ -35,13 +35,13 @@ struct ShareChannels: View { @EnvironmentObject var bleManager: BLEManager @State var channelSet: ChannelSet = ChannelSet() @State var includeChannel0 = true - @State var includeChannel1 = false - @State var includeChannel2 = false - @State var includeChannel3 = false - @State var includeChannel4 = false - @State var includeChannel5 = false - @State var includeChannel6 = false - @State var includeChannel7 = false + @State var includeChannel1 = true + @State var includeChannel2 = true + @State var includeChannel3 = true + @State var includeChannel4 = true + @State var includeChannel5 = true + @State var includeChannel6 = true + @State var includeChannel7 = true @State var isPresentingHelp = false var node: NodeInfoEntity? @State private var channelsUrl = "https://www.meshtastic.org/e/#" @@ -238,10 +238,7 @@ struct ShareChannels: View { .font(.callout) .padding([.leading,.trailing,.bottom]) Text("Private Channels").font(.title2) - Text("The other six channels can be used for private group converations. Each of these groups has its own encryption key.") - .font(.callout) - .padding([.leading,.trailing,.bottom]) - Text("From this view your primary channel and mesh settings are always shared in the generated QR code and you can toggle to include your admin channel and any private groups you want the person you are sharing with to have access to.") + Text("The other channels can be used for private group converations. Each of these groups has its own encryption key.") .font(.callout) .padding([.leading,.trailing,.bottom]) Divider()