diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index ddc19e5e..c4639051 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -944,25 +944,26 @@ func textMessageAppPacket( newMessage.replyID = Int64(packet.decoded.replyID) } // Updated logic for handling toUser - if fetchedUsers.first(where: { $0.num == packet.to }) != nil && packet.to != Constants.maximumNodeNum { + // Updated logic for handling toUser + if packet.to != Constants.maximumNodeNum, let existingUser = fetchedUsers.first(where: { $0.num == packet.to }) { if !storeForwardBroadcast { - newMessage.toUser = fetchedUsers.first(where: { $0.num == packet.to }) + newMessage.toUser = existingUser } else if storeForwardBroadcast { // For S&F broadcast messages, treat as a channel message (not a DM) newMessage.toUser = nil - } else { - do { - let newUser = try createUser(num: Int64(truncatingIfNeeded: packet.to), context: context) - newMessage.toUser = newUser - } catch CoreDataError.invalidInput(let message) { - Logger.data.error("Error Creating a new Core Data UserEntity (Invalid Input) from node number: \(packet.to, privacy: .public) Error: \(message, privacy: .public)") - } catch { - Logger.data.error("Error Creating a new Core Data UserEntity from node number: \(packet.to, privacy: .public) Error: \(error.localizedDescription, privacy: .public)") - } + } + } else { + do { + let newUser = try createUser(num: Int64(truncatingIfNeeded: packet.to), context: context) + newMessage.toUser = newUser + } catch CoreDataError.invalidInput(let message) { + Logger.data.error("Error Creating a new Core Data UserEntity (Invalid Input) from node number: \(packet.to, privacy: .public) Error: \(message, privacy: .public)") + } catch { + Logger.data.error("Error Creating a new Core Data UserEntity from node number: \(packet.to, privacy: .public) Error: \(error.localizedDescription, privacy: .public)") } } - if fetchedUsers.first(where: { $0.num == packet.from }) != nil { - newMessage.fromUser = fetchedUsers.first(where: { $0.num == packet.from }) + if let existingUser = fetchedUsers.first(where: { $0.num == packet.from }) { + newMessage.fromUser = existingUser /// Set the public key for the message if newMessage.fromUser?.pkiEncrypted ?? false && packet.pkiEncrypted { newMessage.pkiEncrypted = true