import SwiftUI enum NewsInfoType { case bundle case category case article } @Observable class NewsInfo: Identifiable, Hashable { let id: UUID = UUID() var name: String var count: UInt let type: NewsInfoType var categoryID: UUID? var articleID: UInt? var parentID: UInt? var path: [String] var expanded: Bool = false var children: [NewsInfo] = [] var articleFlavors: [String]? var articleUsername: String? var articleDate: Date? var read: Bool = false var expandable: Bool { self.type == .bundle || self.type == .category || self.children.count > 0 } var lookupPath: String? { switch self.type { case .bundle, .category: return "/\(self.path.joined(separator: "/"))" case .article: guard let aid = self.articleID else { return nil } // if let pid = self.parentID, pid != 0 { // return "/\(self.path.joined(separator: "/"))/\(pid)/\(aid)" // } return "/\(self.path.joined(separator: "/"))/\(aid)" } } var parentArticleLookupPath: String? { switch self.type { case .bundle, .category: // if self.path.count <= 1 { // return "/" // } // let parentPath = self.path[0.. Bool { return lhs.id == rhs.id } }