| | |
| | | } |
| | | } |
| | | |
| | | struct SmartDefaultNoteProvenance: Codable, Hashable { |
| | | let entryID: String |
| | | let languageCode: String |
| | | let notesVersion: Int |
| | | let noteFingerprint: String |
| | | } |
| | | |
| | | struct SmartAppCategorizationAssignment: Codable, Hashable, Identifiable { |
| | | let appName: String |
| | | let bundleIdentifier: String? |
| | |
| | | let reason: String |
| | | let provenance: [String] |
| | | let defaultNote: String? |
| | | let defaultNoteCandidates: [String] |
| | | let defaultNoteProvenance: SmartDefaultNoteProvenance? |
| | | |
| | | var id: String { |
| | | if let bundleIdentifier, !bundleIdentifier.isEmpty { |
| | |
| | | source: SmartCategorizationAssignmentSource, |
| | | reason: String, |
| | | provenance: [String] = [], |
| | | defaultNote: String? = nil |
| | | defaultNote: String? = nil, |
| | | defaultNoteCandidates: [String] = [], |
| | | defaultNoteProvenance: SmartDefaultNoteProvenance? = nil |
| | | ) { |
| | | self.appName = appName |
| | | self.bundleIdentifier = bundleIdentifier |
| | |
| | | self.reason = reason |
| | | self.provenance = provenance |
| | | self.defaultNote = defaultNote |
| | | self.defaultNoteCandidates = defaultNoteCandidates |
| | | self.defaultNoteProvenance = defaultNoteProvenance |
| | | } |
| | | |
| | | private static func uniqueOrdered(_ ids: [SmartCategoryID]) -> [SmartCategoryID] { |