Query for new highlights when calling findHighlight for PDFs

This fixes an issue where you could not create a note on a
new PDF highlight.
This commit is contained in:
Jackson Harper 2023-12-07 10:36:44 +08:00
parent 7bece652ae
commit 8b7a59dc3c
3 changed files with 7 additions and 4 deletions

View file

@ -178,7 +178,7 @@ import Utils
if let highlight = annotations?.compactMap({ $0 as? HighlightAnnotation }).first,
let customHighlight = highlight.customData?["omnivoreHighlight"] as? [String: String],
let highlightID = customHighlight["id"]?.lowercased(),
let selectedHighlight = viewModel.findHighlight(highlightID: highlightID)
let selectedHighlight = viewModel.findHighlight(dataService: dataService, highlightID: highlightID)
{
addNoteHighlight = selectedHighlight
annotation = selectedHighlight.annotation ?? ""

View file

@ -12,9 +12,11 @@ final class PDFViewerViewModel: ObservableObject {
var snackbarMessage: String?
let pdfItem: PDFItem
var highlights: [Highlight]
init(pdfItem: PDFItem) {
self.pdfItem = pdfItem
self.highlights = pdfItem.highlights
}
func snackbar(message: String) {
@ -22,8 +24,9 @@ final class PDFViewerViewModel: ObservableObject {
showSnackbar = true
}
func findHighlight(highlightID: String) -> Highlight? {
pdfItem.highlights.first { $0.id == highlightID }
func findHighlight(dataService: DataService, highlightID: String) -> Highlight? {
let libraryItem = LibraryItem.lookup(byID: pdfItem.itemID, inContext: dataService.viewContext)
return libraryItem?.highlights.asArray(of: Highlight.self).first { $0.id == highlightID }
}
func loadHighlightPatches(completion onComplete: @escaping ([String]) -> Void) {

View file

@ -15,7 +15,7 @@ public struct PDFItem {
public let isArchived: Bool
public let isRead: Bool
public let downloadURL: String
public let highlights: [Highlight]
public var highlights: [Highlight]
public static func make(item: LibraryItem) -> PDFItem? {
guard item.isPDF else { return nil }