diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 42d90624..bd764e32 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -112,6 +112,7 @@ DDAF8C6826ED0D070058C060 /* deviceonly.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = deviceonly.pb.swift; sourceTree = ""; }; DDAF8C6D26ED19040058C060 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; DDB2CC6D27F3EB47009C5FCC /* telemetry.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = telemetry.pb.swift; sourceTree = ""; }; + DDB2CC6F27F3F0AC009C5FCC /* MeshtasticDataModel v 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "MeshtasticDataModel v 3.xcdatamodel"; sourceTree = ""; }; DDC2E15426CE248E0042C5E4 /* MeshtasticClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeshtasticClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; DDC2E15726CE248E0042C5E4 /* MeshtasticClientApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshtasticClientApp.swift; sourceTree = ""; }; DDC2E15B26CE248F0042C5E4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ../Assets.xcassets; sourceTree = ""; }; @@ -942,10 +943,11 @@ DD9D8F2D2764403B00080993 /* Meshtastic.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + DDB2CC6F27F3F0AC009C5FCC /* MeshtasticDataModel v 3.xcdatamodel */, DD45C77427BD4EF80011784F /* MeshtasticDataModel v2.xcdatamodel */, DD9D8F2E2764403B00080993 /* CoreDataSample.xcdatamodel */, ); - currentVersion = DD45C77427BD4EF80011784F /* MeshtasticDataModel v2.xcdatamodel */; + currentVersion = DDB2CC6F27F3F0AC009C5FCC /* MeshtasticDataModel v 3.xcdatamodel */; name = Meshtastic.xcdatamodeld; path = MeshtasticClient/Meshtastic.xcdatamodeld; sourceTree = ""; diff --git a/MeshtasticClient/Helpers/BLEManager.swift b/MeshtasticClient/Helpers/BLEManager.swift index 551f9220..4f519aa2 100644 --- a/MeshtasticClient/Helpers/BLEManager.swift +++ b/MeshtasticClient/Helpers/BLEManager.swift @@ -705,7 +705,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph } newMessage.receivedACK = false newMessage.direction = "IN" - newMessage.isTapback = decodedInfo.packet.decoded.emoji == 1 + newMessage.isEmoji = decodedInfo.packet.decoded.emoji == 1 if decodedInfo.packet.decoded.replyID > 0 { @@ -1010,7 +1010,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph } // Send Message - public func sendMessage(message: String, toUserNum: Int64, isTapback: Bool, replyID: Int64) -> Bool { + public func sendMessage(message: String, toUserNum: Int64, isEmoji: Bool, replyID: Int64) -> Bool { var success = false @@ -1061,7 +1061,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph newMessage.receivedACK = false newMessage.direction = "IN" newMessage.toUser = fetchedUsers.first(where: { $0.num == toUserNum }) - newMessage.isTapback = isTapback + newMessage.isEmoji = isEmoji if replyID > 0 { @@ -1093,7 +1093,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph meshPacket.to = UInt32(toUserNum) meshPacket.from = UInt32(fromUserNum) meshPacket.decoded = dataMessage - meshPacket.decoded.emoji = isTapback ? 1 : 0 + meshPacket.decoded.emoji = isEmoji ? 1 : 0 if replyID > 0 { meshPacket.decoded.replyID = UInt32(replyID) } diff --git a/MeshtasticClient/Meshtastic.xcdatamodeld/.xccurrentversion b/MeshtasticClient/Meshtastic.xcdatamodeld/.xccurrentversion index b75edd3e..0ef73013 100644 --- a/MeshtasticClient/Meshtastic.xcdatamodeld/.xccurrentversion +++ b/MeshtasticClient/Meshtastic.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - MeshtasticDataModel v2.xcdatamodel + MeshtasticDataModel v 3.xcdatamodel diff --git a/MeshtasticClient/Meshtastic.xcdatamodeld/MeshtasticDataModel v 3.xcdatamodel/contents b/MeshtasticClient/Meshtastic.xcdatamodeld/MeshtasticDataModel v 3.xcdatamodel/contents new file mode 100644 index 00000000..2769305d --- /dev/null +++ b/MeshtasticClient/Meshtastic.xcdatamodeld/MeshtasticDataModel v 3.xcdatamodel/contents @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MeshtasticClient/Views/Messages/UserMessageList.swift b/MeshtasticClient/Views/Messages/UserMessageList.swift index 11373df7..1d64cb66 100644 --- a/MeshtasticClient/Views/Messages/UserMessageList.swift +++ b/MeshtasticClient/Views/Messages/UserMessageList.swift @@ -101,7 +101,7 @@ struct UserMessageList: View { Button(action: { - if bleManager.sendMessage(message: "❤️", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "❤️", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent ❤️ Tapback") self.context.refresh(user, mergeChanges: true) @@ -115,7 +115,7 @@ struct UserMessageList: View { } Button(action: { - if bleManager.sendMessage(message: "👍", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "👍", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent 👍 Tapback") self.context.refresh(user, mergeChanges: true) @@ -129,7 +129,7 @@ struct UserMessageList: View { } Button(action: { - if bleManager.sendMessage(message: "👎", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "👎", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent 👎 Tapback") self.context.refresh(user, mergeChanges: true) @@ -143,7 +143,7 @@ struct UserMessageList: View { } Button(action: { - if bleManager.sendMessage(message: "🤣", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "🤣", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent 🤣 Tapback") self.context.refresh(user, mergeChanges: true) @@ -157,7 +157,7 @@ struct UserMessageList: View { } Button(action: { - if bleManager.sendMessage(message: "‼️", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "‼️", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent ‼️ Tapback") self.context.refresh(user, mergeChanges: true) @@ -171,7 +171,7 @@ struct UserMessageList: View { } Button(action: { - if bleManager.sendMessage(message: "❓", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "❓", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent ❓ Tapback") self.context.refresh(user, mergeChanges: true) @@ -185,7 +185,7 @@ struct UserMessageList: View { } Button(action: { - if bleManager.sendMessage(message: "💩", toUserNum: user.num, isTapback: true, replyID: message.messageId) { + if bleManager.sendMessage(message: "💩", toUserNum: user.num, isEmoji: true, replyID: message.messageId) { print("Sent 💩 Tapback") self.context.refresh(user, mergeChanges: true) @@ -434,7 +434,7 @@ struct UserMessageList: View { .padding(.bottom, 15) Button(action: { - if bleManager.sendMessage(message: typingMessage, toUserNum: user.num, isTapback: false, replyID: replyMessageId) { + if bleManager.sendMessage(message: typingMessage, toUserNum: user.num, isEmoji: false, replyID: replyMessageId) { typingMessage = "" focusedField = nil replyMessageId = 0 diff --git a/MeshtasticClient/Views/Nodes/NodeDetail.swift b/MeshtasticClient/Views/Nodes/NodeDetail.swift index f3ec3049..a6d96931 100644 --- a/MeshtasticClient/Views/Nodes/NodeDetail.swift +++ b/MeshtasticClient/Views/Nodes/NodeDetail.swift @@ -130,25 +130,9 @@ struct NodeDetail: View { VStack(alignment: .center) { - BatteryIcon(batteryLevel: mostRecent.batteryLevel, font: .title, color: .accentColor) + BatteryIcon(batteryLevel: 100, font: .title, color: .accentColor) .padding(.bottom) - if mostRecent.batteryLevel > 0 { - - Text("Battery") - .font(.title2) - .fixedSize() - .textCase(.uppercase) - Text(String(mostRecent.batteryLevel) + "%") - .font(.title2) - .foregroundColor(.gray) - .symbolRenderingMode(.hierarchical) - } else { - - Text("Powered") - .font(.callout) - .fixedSize() - .textCase(.uppercase) - } + } .padding(5) } @@ -207,63 +191,66 @@ struct NodeDetail: View { .padding() Divider() - ForEach(node.positions!.array as! [PositionEntity], id: \.self) { (mappin: PositionEntity) in - - if mappin.coordinate != nil { - - VStack { - - HStack { - - Image(systemName: "mappin.and.ellipse").foregroundColor(.accentColor) // .font(.subheadline) - Text("Lat/Long:").font(.caption) - Text("\(String(mappin.latitude ?? 0)) \(String(mappin.longitude ?? 0))") - .foregroundColor(.gray) - .font(.caption) - - Image(systemName: "arrow.up.arrow.down.circle") - .font(.subheadline) - .foregroundColor(.accentColor) - .symbolRenderingMode(.hierarchical) - - Text("Alt:") - .font(.caption) - - Text("\(String(mappin.altitude))m") - .foregroundColor(.gray) - .font(.caption) - } - HStack { - - Image(systemName: "clock.badge.checkmark.fill") - .font(.subheadline) - .foregroundColor(.accentColor) - .symbolRenderingMode(.hierarchical) - Text("Time:") - .font(.caption) - Text("\(mappin.time!, style: .date) \(mappin.time!, style: .time)") - .foregroundColor(.gray) - .font(.caption) - Divider() - - HStack { - - BatteryIcon(batteryLevel: mappin.batteryLevel, font: .subheadline, color: .accentColor) - - if mappin.batteryLevel > 0 { - - Text(String(mappin.batteryLevel) + "%") - .font(.caption2) - .foregroundColor(.gray) - } - } - } - } - .padding(1) - Divider() - } + + } +// ForEach(node.positions!.array as! [PositionEntity], id: \.self) { (mappin: PositionEntity) in +// +// if mappin.coordinate != nil { +// +// VStack { +// +// HStack { +// +// Image(systemName: "mappin.and.ellipse").foregroundColor(.accentColor) // .font(.subheadline) +// Text("Lat/Long:").font(.caption) +// Text("\(String(mappin.latitude ?? 0)) \(String(mappin.longitude ?? 0))") +// .foregroundColor(.gray) +// .font(.caption) +// +// Image(systemName: "arrow.up.arrow.down.circle") +// .font(.subheadline) +// .foregroundColor(.accentColor) +// .symbolRenderingMode(.hierarchical) +// +// Text("Alt:") +// .font(.caption) +// +// Text("\(String(mappin.altitude))m") +// .foregroundColor(.gray) +// .font(.caption) +// } +// HStack { +// +// Image(systemName: "clock.badge.checkmark.fill") +// .font(.subheadline) +// .foregroundColor(.accentColor) +// .symbolRenderingMode(.hierarchical) +// Text("Time:") +// .font(.caption) +// Text("\(mappin.time!, style: .date) \(mappin.time!, style: .time)") +// .foregroundColor(.gray) +// .font(.caption) +// Divider() +// +// HStack { +// +// BatteryIcon(batteryLevel: mappin.batteryLevel, font: .subheadline, color: .accentColor) +// +// if mappin.batteryLevel > 0 { +// +// Text(String(mappin.batteryLevel) + "%") +// .font(.caption2) +// .foregroundColor(.gray) +// } +// } +// } +// } +// .padding(1) +// Divider() +// } +// } } } }