Meshtastic-Apple/MeshtasticClient/Model/MessageModel.swift

98 lines
5.5 KiB
Swift

//
// MessageModel.swift
// MeshtasticClient
//
// Created by Garth Vander Houwen on 9/21/21.
//
import Foundation
struct MessageModel : Identifiable, Codable
{
let id: UUID
var messageId: UInt32
var messageTimestamp: Int64
var fromUserId: UInt32
var toUserId: UInt32
var fromUserLongName: String
var toUserLongName: String
var fromUserShortName: String
var toUserShortName: String
var receivedACK: Bool
var messagePayload: String
var direction: String
init(id: UUID = UUID(), messageId: UInt32, messageTimeStamp: Int64, fromUserId: UInt32, toUserId: UInt32, fromUserLongName: String, toUserLongName: String, fromUserShortName: String, toUserShortName: String, receivedACK: Bool, messagePayload: String, direction: String)
{
self.id = id
self.messageId = messageId
self.messageTimestamp = messageTimeStamp
self.fromUserId = fromUserId
self.toUserId = toUserId
self.fromUserLongName = fromUserLongName
self.toUserLongName = toUserLongName
self.fromUserShortName = fromUserShortName
self.toUserShortName = toUserShortName
self.receivedACK = receivedACK
self.messagePayload = messagePayload
self.direction = direction
}
}
extension MessageModel {
static var data: [MessageModel] {
[
// Put dev test data here
MessageModel(messageId: 3773493287, messageTimeStamp: 1632407404, fromUserId: 4064715620, toUserId: 4294967295, fromUserLongName: "TLORA V1 #1", toUserLongName: "Unknown 1", fromUserShortName: "T#", toUserShortName: "U1", receivedACK: false, messagePayload: "I sent a super great message with amazing text", direction: "received"),
MessageModel(messageId: 3773493338, messageTimeStamp: 1632643652, fromUserId: 2930161432, toUserId: 4294967295, fromUserLongName: "TBEAM ARMY GREEN", toUserLongName: "Unknown 1", fromUserShortName: "T#", toUserShortName: "U1", receivedACK: false, messagePayload: "It was the best message", direction: "received"),
MessageModel(messageId: 3773493338, messageTimeStamp: 1632643652, fromUserId: 2930161432, toUserId: 4294967295, fromUserLongName: "TBEAM ARMY GREEN", toUserLongName: "Unknown 1", fromUserShortName: "TAG", toUserShortName: "U1", receivedACK: false, messagePayload: "SwiftUI is great, but it has been lacking of specific native controls, even though that gets much better year by year. One of them was the text view. When SwiftUI was first released, it had no native ", direction: "received"),
MessageModel(messageId: 3773493338, messageTimeStamp: 1632643652, fromUserId: 2930161432, toUserId: 4294967295, fromUserLongName: "TBEAM ARMY GREEN", toUserLongName: "Unknown 1", fromUserShortName: "TAG", toUserShortName: "U1", receivedACK: false, messagePayload: "One of them was the text view. When SwiftUI was first released, it had no native equivalent of the text view; implementing a custom UIViewRepresentable type to contain UITextView was the only way to g", direction: "received"),
MessageModel(messageId: 3773493338, messageTimeStamp: 1632407404, fromUserId: 2930161432, toUserId: 4294967295, fromUserLongName: "TBEAM ARMY GREEN", toUserLongName: "Unknown 1", fromUserShortName: "TAG", toUserShortName: "U1", receivedACK: false, messagePayload: "One of them was the text view. When SwiftUI was first released, it had no native equivalent of the text view; implementing a custom UIViewRepresentable type to contain UITextView was the only way to g", direction: "received"),
MessageModel(messageId: 3773493338, messageTimeStamp: 1632643652, fromUserId: 2930161432, toUserId: 4294967295, fromUserLongName: "TBEAM ARMY GREEN", toUserLongName: "Unknown 1", fromUserShortName: "GVH", toUserShortName: "U1", receivedACK: false, messagePayload: "yo", direction: "received"),
MessageModel(messageId: 3773493338, messageTimeStamp: 1632407404, fromUserId: 2930161432, toUserId: 4294967295, fromUserLongName: "TBEAM ARMY GREEN", toUserLongName: "Unknown 1", fromUserShortName: "GVH", toUserShortName: "U1", receivedACK: false, messagePayload: "yo", direction: "received")
]
}
}
extension MessageModel {
struct Data {
var id: UUID
var messageId: UInt32
var messageTimestamp: Int64
var fromUserId: UInt32
var toUserId: UInt32
var fromUserLongName: String
var toUserLongName: String
var fromUserShortName: String
var toUserShortName: String
var receivedACK: Bool
var messagePayload: String
var direction: String
}
var data: Data {
return Data(id: id, messageId: messageId, messageTimestamp: messageTimestamp, fromUserId: fromUserId, toUserId: toUserId, fromUserLongName: fromUserLongName, toUserLongName: toUserLongName, fromUserShortName: fromUserShortName, toUserShortName: toUserShortName, receivedACK: receivedACK, messagePayload: messagePayload, direction: direction)
}
mutating func update(from data: Data) {
messageId = data.messageId
messageTimestamp = data.messageTimestamp
fromUserId = data.fromUserId
toUserId = data.toUserId
fromUserLongName = data.fromUserLongName
toUserLongName = data.toUserLongName
fromUserShortName = data.fromUserShortName
toUserShortName = data.toUserShortName
receivedACK = data.receivedACK
messagePayload = data.messagePayload
direction = data.direction
}
}