mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Fix message view rendering issues for acts and incoming messages
This commit is contained in:
parent
e9e39e3c0c
commit
f4c4df8182
6 changed files with 26 additions and 30 deletions
|
|
@ -59,6 +59,7 @@
|
|||
DDC3B274283F411B00AC321C /* LastHeardText.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC3B273283F411B00AC321C /* LastHeardText.swift */; };
|
||||
DDC4D568275499A500A4208E /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC4D567275499A500A4208E /* Persistence.swift */; };
|
||||
DDD94A502845C8F5004A87A0 /* DateTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDD94A4F2845C8F5004A87A0 /* DateTimeText.swift */; };
|
||||
DDD9E4E4284B208E003777C5 /* UserEntityExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDD9E4E3284B208E003777C5 /* UserEntityExtension.swift */; };
|
||||
DDF924CA26FBB953009FE055 /* ConnectedDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDF924C926FBB953009FE055 /* ConnectedDevice.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
|
|
@ -140,6 +141,7 @@
|
|||
DDC4D567275499A500A4208E /* Persistence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = "<group>"; };
|
||||
DDCA31312826009C00207175 /* PassKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PassKit.framework; path = System/Library/Frameworks/PassKit.framework; sourceTree = SDKROOT; };
|
||||
DDD94A4F2845C8F5004A87A0 /* DateTimeText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateTimeText.swift; sourceTree = "<group>"; };
|
||||
DDD9E4E3284B208E003777C5 /* UserEntityExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserEntityExtension.swift; sourceTree = "<group>"; };
|
||||
DDF924C926FBB953009FE055 /* ConnectedDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectedDevice.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
|
|
@ -384,6 +386,7 @@
|
|||
children = (
|
||||
DDC4D567275499A500A4208E /* Persistence.swift */,
|
||||
DD5394FD276BA0EF00AD86B1 /* PositionEntityExtension.swift */,
|
||||
DDD9E4E3284B208E003777C5 /* UserEntityExtension.swift */,
|
||||
);
|
||||
path = Persistence;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -576,6 +579,7 @@
|
|||
DD47E3D626F17ED900029299 /* CircleText.swift in Sources */,
|
||||
DDC2E18F26CE25FE0042C5E4 /* ContentView.swift in Sources */,
|
||||
DD17E5DE277D49D400010EC2 /* storeforward.pb.swift in Sources */,
|
||||
DDD9E4E4284B208E003777C5 /* UserEntityExtension.swift in Sources */,
|
||||
C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */,
|
||||
DDAF8C6326ED0A230058C060 /* admin.pb.swift in Sources */,
|
||||
C9483F6D2773017500998F6B /* MapView.swift in Sources */,
|
||||
|
|
|
|||
|
|
@ -427,6 +427,8 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
|
|||
if meshLoggingEnabled { MeshLogger.log("ℹ️ MESH PACKET received for Remote Hardware App UNHANDLED \(try! decodedInfo.packet.jsonString())") }
|
||||
case .positionApp:
|
||||
positionPacket(packet: decodedInfo.packet, meshLogging: meshLoggingEnabled, context: context!)
|
||||
case .waypointApp:
|
||||
if meshLoggingEnabled { MeshLogger.log("ℹ️ MESH PACKET received for Waypoint App UNHANDLED \(try! decodedInfo.packet.jsonString())") }
|
||||
case .nodeinfoApp:
|
||||
nodeInfoAppPacket(packet: decodedInfo.packet, meshLogging: meshLoggingEnabled, context: context!)
|
||||
case .routingApp:
|
||||
|
|
|
|||
|
|
@ -430,6 +430,8 @@ func routingPacket (packet: MeshPacket, meshLogging: Bool, context: NSManagedObj
|
|||
fetchedMessage!.ackSNR = packet.rxSnr
|
||||
fetchedMessage!.ackTimestamp = Int32(packet.rxTime)
|
||||
fetchedMessage!.objectWillChange.send()
|
||||
fetchedMessage!.fromUser?.objectWillChange.send()
|
||||
fetchedMessage!.toUser?.objectWillChange.send()
|
||||
}
|
||||
|
||||
try context.save()
|
||||
|
|
|
|||
16
MeshtasticClient/Persistence/UserEntityExtension.swift
Normal file
16
MeshtasticClient/Persistence/UserEntityExtension.swift
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
//
|
||||
// UserEntityExtension.swift
|
||||
// MeshtasticClient
|
||||
//
|
||||
// Created by Garth Vander Houwen on 6/3/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension UserEntity {
|
||||
|
||||
var messageList: [MessageEntity] {
|
||||
|
||||
self.value(forKey: "allMessages") as! [MessageEntity]
|
||||
}
|
||||
}
|
||||
|
|
@ -283,20 +283,6 @@ struct Config {
|
|||
/// window.
|
||||
var gpsAttemptTime: UInt32 = 0
|
||||
|
||||
///
|
||||
/// Shall we accept 2D GPS fixes? By default, only 3D fixes are accepted
|
||||
/// (during a 2D fix, altitude values are unreliable and will be excluded)
|
||||
var gpsAccept2D: Bool = false
|
||||
|
||||
///
|
||||
/// GPS maximum DOP accepted (dilution of precision)
|
||||
/// Set a rejection threshold for GPS readings based on their precision,
|
||||
/// relative to the GPS rated accuracy (which is typically ~3m)
|
||||
/// Solutions above this value will be treated as retryable errors!
|
||||
/// Useful range is between 1 - 64 (3m - <~200m)
|
||||
/// By default (if zero), accept all GPS readings
|
||||
var gpsMaxDop: UInt32 = 0
|
||||
|
||||
///
|
||||
/// Bit field of boolean configuration options for POSITION messages
|
||||
/// (bitwise OR of PositionFlags)
|
||||
|
|
@ -1294,8 +1280,6 @@ extension Config.PositionConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
5: .standard(proto: "gps_disabled"),
|
||||
6: .standard(proto: "gps_update_interval"),
|
||||
7: .standard(proto: "gps_attempt_time"),
|
||||
8: .standard(proto: "gps_accept_2d"),
|
||||
9: .standard(proto: "gps_max_dop"),
|
||||
10: .standard(proto: "position_flags"),
|
||||
]
|
||||
|
||||
|
|
@ -1311,8 +1295,6 @@ extension Config.PositionConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
case 5: try { try decoder.decodeSingularBoolField(value: &self.gpsDisabled) }()
|
||||
case 6: try { try decoder.decodeSingularUInt32Field(value: &self.gpsUpdateInterval) }()
|
||||
case 7: try { try decoder.decodeSingularUInt32Field(value: &self.gpsAttemptTime) }()
|
||||
case 8: try { try decoder.decodeSingularBoolField(value: &self.gpsAccept2D) }()
|
||||
case 9: try { try decoder.decodeSingularUInt32Field(value: &self.gpsMaxDop) }()
|
||||
case 10: try { try decoder.decodeSingularUInt32Field(value: &self.positionFlags) }()
|
||||
default: break
|
||||
}
|
||||
|
|
@ -1338,12 +1320,6 @@ extension Config.PositionConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
if self.gpsAttemptTime != 0 {
|
||||
try visitor.visitSingularUInt32Field(value: self.gpsAttemptTime, fieldNumber: 7)
|
||||
}
|
||||
if self.gpsAccept2D != false {
|
||||
try visitor.visitSingularBoolField(value: self.gpsAccept2D, fieldNumber: 8)
|
||||
}
|
||||
if self.gpsMaxDop != 0 {
|
||||
try visitor.visitSingularUInt32Field(value: self.gpsMaxDop, fieldNumber: 9)
|
||||
}
|
||||
if self.positionFlags != 0 {
|
||||
try visitor.visitSingularUInt32Field(value: self.positionFlags, fieldNumber: 10)
|
||||
}
|
||||
|
|
@ -1357,8 +1333,6 @@ extension Config.PositionConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
if lhs.gpsDisabled != rhs.gpsDisabled {return false}
|
||||
if lhs.gpsUpdateInterval != rhs.gpsUpdateInterval {return false}
|
||||
if lhs.gpsAttemptTime != rhs.gpsAttemptTime {return false}
|
||||
if lhs.gpsAccept2D != rhs.gpsAccept2D {return false}
|
||||
if lhs.gpsMaxDop != rhs.gpsMaxDop {return false}
|
||||
if lhs.positionFlags != rhs.positionFlags {return false}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
return true
|
||||
|
|
|
|||
|
|
@ -40,20 +40,18 @@ struct UserMessageList: View {
|
|||
let hasTapbackSupport = minimumVersion.compare(firmwareVersion, options: .numeric) == .orderedAscending || minimumVersion.compare(firmwareVersion, options: .numeric) == .orderedSame
|
||||
|
||||
VStack {
|
||||
|
||||
let allMessages = user.value(forKey: "allMessages") as! [MessageEntity]
|
||||
|
||||
ScrollViewReader { scrollView in
|
||||
|
||||
ScrollView {
|
||||
|
||||
if allMessages.count > 0 {
|
||||
if user.messageList.count > 0 {
|
||||
|
||||
HStack{
|
||||
// Padding at the top of the message list
|
||||
}.padding(.bottom)
|
||||
|
||||
ForEach( allMessages ) { (message: MessageEntity) in
|
||||
ForEach( user.messageList ) { (message: MessageEntity) in
|
||||
|
||||
let currentUser: Bool = (bleManager.connectedPeripheral == nil) ? false : ((bleManager.connectedPeripheral != nil && bleManager.connectedPeripheral.num == message.fromUser?.num) ? true : false )
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue