Meshtastic-Apple/Meshtastic/Extensions/CoreData/MyInfoEntityExtension.swift
2026-04-16 12:10:00 -07:00

41 lines
1.1 KiB
Swift

//
// MyInfoEntityExtension.swift
// Meshtastic
//
// Copyright(c) Garth Vander Houwen 9/3/23.
//
import Foundation
import SwiftData
extension MyInfoEntity {
@MainActor
var messageList: [MessageEntity] {
let context = PersistenceController.shared.context
let descriptor = FetchDescriptor<MessageEntity>(
predicate: #Predicate<MessageEntity> { msg in
msg.toUser == nil && msg.isEmoji == false
},
sortBy: [SortDescriptor(\MessageEntity.messageTimestamp, order: .forward)]
)
return (try? context.fetch(descriptor)) ?? []
}
@MainActor
func unreadMessages(context: ModelContext) -> Int {
let descriptor = FetchDescriptor<MessageEntity>(
predicate: #Predicate<MessageEntity> { msg in
msg.toUser == nil && msg.isEmoji == false && msg.read == false
}
)
return (try? context.fetchCount(descriptor)) ?? 0
}
@MainActor
var unreadMessages: Int { unreadMessages(context: PersistenceController.shared.context) }
var hasAdmin: Bool {
let adminChannel = channels.filter { $0.name?.lowercased() == "admin" }
return adminChannel.count > 0
}
}