mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
This change modifies the process for generating and integrating the Meshtastic protobufs into the client application. * The generated Swift code is now in a local SPM package `MeshtasticProtobufs` * An Xcode Workspace file `Meshtastic.xcworkspace` was created to more easily manage the new build targets. * The code generation script for the protos was modified to generate the Swift code into the new location. * The README.md was updated to reflect these changes. NOTE: After merging this PR, do not open the project file `Meshtastic.xcodeproj`. You must use the workspace `Meshtastic.xcworkspace` Extracting out the generated protobuf code into its own library enables several opportunities for the project. This is just a first step, but with some more modularization, a standalone Apple Watch app or other targets starts to become a little bit more achievable to implement. After extracting the protobufs into a Swift package, I validate these changes by building and running the Meshtastic app to an iPhone 15 Pro Max, and tried changing some settings on a local node. I then messaged back and forth using two local nodes connected to two different iOS devices.
38 lines
957 B
Swift
38 lines
957 B
Swift
//
|
|
// UserEntityExtension.swift
|
|
// Meshtastic
|
|
//
|
|
// Copyright(c) Garth Vander Houwen 6/3/22.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreData
|
|
import MeshtasticProtobufs
|
|
|
|
extension UserEntity {
|
|
|
|
var messageList: [MessageEntity] {
|
|
self.value(forKey: "allMessages") as? [MessageEntity] ?? [MessageEntity]()
|
|
}
|
|
|
|
var sensorMessageList: [MessageEntity] {
|
|
self.value(forKey: "detectionSensorMessages") as? [MessageEntity] ?? [MessageEntity]()
|
|
}
|
|
|
|
var unreadMessages: Int {
|
|
let unreadMessages = messageList.filter { ($0 as AnyObject).read == false }
|
|
return unreadMessages.count
|
|
}
|
|
}
|
|
|
|
public func createUser(num: Int64, context: NSManagedObjectContext) -> UserEntity {
|
|
let newUser = UserEntity(context: context)
|
|
newUser.num = Int64(num)
|
|
let userId = String(format: "%2X", num)
|
|
newUser.userId = "!\(userId)"
|
|
let last4 = String(userId.suffix(4))
|
|
newUser.longName = "Meshtastic \(last4)"
|
|
newUser.shortName = last4
|
|
newUser.hwModel = "UNSET"
|
|
return newUser
|
|
}
|