diff --git a/components/annotorious-annotator/line-parser.js b/components/annotorious-annotator/line-parser.js
index db450d5c..4bd19d2a 100644
--- a/components/annotorious-annotator/line-parser.js
+++ b/components/annotorious-annotator/line-parser.js
@@ -563,13 +563,7 @@ class AnnotoriousAnnotator extends HTMLElement {
*/
async processCanvas(uri) {
if (!uri) return
- let resolvedCanvas = await vault.get(uri, 'canvas')
- if (!resolvedCanvas && TPEN.activeProject?.manifest) {
- // Canvas not directly resolvable, try to hydrate from all manifests
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- // After manifests are cached, try again
- resolvedCanvas = await vault.get(uri, 'canvas')
- }
+ let resolvedCanvas = await vault.getWithFallback(uri, 'canvas', TPEN.activeProject?.manifest)
if (!resolvedCanvas) {
this.shadowRoot.innerHTML = `
Canvas Error
diff --git a/components/column-selector/index.js b/components/column-selector/index.js
index 0c031634..29dd4595 100644
--- a/components/column-selector/index.js
+++ b/components/column-selector/index.js
@@ -68,11 +68,7 @@ export default class ColumnSelector extends HTMLElement {
return { ...col, label: isAuto ? `Unnamed ${i + 1}` : col.label }
})
- this.#page = await vault.get(pageId, 'annotationpage', true)
- if (!this.#page && TPEN.activeProject?.manifest) {
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- this.#page = await vault.get(pageId, 'annotationpage', true)
- }
+ this.#page = await vault.getWithFallback(pageId, 'annotationpage', TPEN.activeProject?.manifest, true)
if (!this.#page) return
const { orderedItems, columnsInPage, allColumnLines } = orderPageItemsByColumns(
{ columns: this.columns, items: page?.items },
diff --git a/components/continue-working/index.js b/components/continue-working/index.js
index 402703f9..4719fc3c 100644
--- a/components/continue-working/index.js
+++ b/components/continue-working/index.js
@@ -178,13 +178,7 @@ class ContinueWorking extends HTMLElement {
if (!canvasId) return this.generateProjectPlaceholder(project)
let canvas, isV3
- canvas = await vault.get(canvasId, 'canvas')
- if (!canvas && project.manifest?.[0]) {
- // Try to hydrate from all manifests
- await vault.prefetchManifests(project.manifest)
- // After manifests are cached, try again
- canvas = await vault.get(canvasId, 'canvas')
- }
+ canvas = await vault.getWithFallback(canvasId, 'canvas', project.manifest)
if (!canvas) return this.generateProjectPlaceholder(project)
diff --git a/components/default-transcribe/index.js b/components/default-transcribe/index.js
index aea051e1..3daf8977 100644
--- a/components/default-transcribe/index.js
+++ b/components/default-transcribe/index.js
@@ -71,11 +71,7 @@ class TpenTranscriptionElement extends HTMLElement {
}
async #loadPage(annotationPageID) {
- let page = await vault.get(annotationPageID, 'annotationpage')
- if (!page && TPEN.activeProject?.manifest) {
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- page = await vault.get(annotationPageID, 'annotationpage')
- }
+ let page = await vault.getWithFallback(annotationPageID, 'annotationpage', TPEN.activeProject?.manifest)
if (!page) {
return userMessage('Failed to load page. Please try again.')
}
diff --git a/components/legacy-annotator/plain.js b/components/legacy-annotator/plain.js
index 292c5b7d..739bb0a3 100644
--- a/components/legacy-annotator/plain.js
+++ b/components/legacy-annotator/plain.js
@@ -314,11 +314,7 @@ class LegacyAnnotator extends HTMLElement {
async processAnnotationPage(page) {
if(!page) return
- let resolvedPage = await vault.get(page, 'annotationpage')
- if (!resolvedPage && TPEN.activeProject?.manifest) {
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- resolvedPage = await vault.get(page, 'annotationpage')
- }
+ let resolvedPage = await vault.getWithFallback(page, 'annotationpage', TPEN.activeProject?.manifest)
if (!resolvedPage) {
throw new Error("Cannot Resolve AnnotationPage", {cause: "The AnnotationPage is 404 or unresolvable."})
}
@@ -399,13 +395,7 @@ class LegacyAnnotator extends HTMLElement {
const ctx = imageCanvas.getContext("2d")
let err
if(!canvas) return
- let resolvedCanvas = await vault.get(canvas, 'canvas')
- if (!resolvedCanvas && TPEN.activeProject?.manifest) {
- // Try to hydrate from all manifests
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- // After manifests are cached, try again
- resolvedCanvas = await vault.get(canvas, 'canvas')
- }
+ let resolvedCanvas = await vault.getWithFallback(canvas, 'canvas', TPEN.activeProject?.manifest)
if (!resolvedCanvas) {
throw new Error("Canvas Error", {cause: "The Canvas could not be resolved"})
}
diff --git a/components/simple-transcription/index.js b/components/simple-transcription/index.js
index ec87f3a4..7b5bac31 100644
--- a/components/simple-transcription/index.js
+++ b/components/simple-transcription/index.js
@@ -481,11 +481,7 @@ export default class SimpleTranscriptionInterface extends HTMLElement {
}
// Use vault.get to fetch the page properly
- let fetchedPage = await vault.get(pageID, 'annotationpage', true)
- if (!fetchedPage && TPEN.activeProject?.manifest) {
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- fetchedPage = await vault.get(pageID, 'annotationpage', true)
- }
+ let fetchedPage = await vault.getWithFallback(pageID, 'annotationpage', TPEN.activeProject?.manifest, true)
if (!fetchedPage) {
TPEN.eventDispatcher.dispatch("tpen-toast", {
message: "Failed to load page. Please try again.",
@@ -519,11 +515,7 @@ export default class SimpleTranscriptionInterface extends HTMLElement {
canvasID = target.source
}
- let fetchedCanvas = await vault.get(canvasID, 'canvas')
- if (!fetchedCanvas && TPEN.activeProject?.manifest) {
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- fetchedCanvas = await vault.get(canvasID, 'canvas')
- }
+ let fetchedCanvas = await vault.getWithFallback(canvasID, 'canvas', TPEN.activeProject?.manifest)
if (!fetchedCanvas) {
TPEN.eventDispatcher.dispatch("tpen-toast", {
message: "Could not load canvas. Please try again.",
diff --git a/components/transcription-block/index.js b/components/transcription-block/index.js
index 54a6d33d..7f4fe2dd 100644
--- a/components/transcription-block/index.js
+++ b/components/transcription-block/index.js
@@ -92,14 +92,7 @@ export default class TranscriptionBlock extends HTMLElement {
*/
async initializeAsync() {
const pageID = TPEN.screen?.pageInQuery
- this.#page = await vault.get(pageID, 'annotationpage', true)
- if (!this.#page && TPEN.activeProject?.manifest) {
- // Try to hydrate from all manifests
- const manifestUrls = TPEN.activeProject?.manifest
- await vault.prefetchManifests(manifestUrls)
- // After manifests are cached, try again
- this.#page = await vault.get(pageID, 'annotationpage', true)
- }
+ this.#page = await vault.getWithFallback(pageID, 'annotationpage', TPEN.activeProject?.manifest, true)
const projectPage = TPEN.activeProject.layers.flatMap(layer => layer.pages || []).find(p => p.id.split('/').pop() === pageID.split('/').pop())
if (!this.#page || !projectPage) return
diff --git a/interfaces/transcription/index.js b/interfaces/transcription/index.js
index c444aa69..f25a3d5c 100644
--- a/interfaces/transcription/index.js
+++ b/interfaces/transcription/index.js
@@ -624,13 +624,7 @@ export default class TranscriptionInterface extends HTMLElement {
canvasID = allPages[0]?.target
}
- let canvas = await vault.get(canvasID, 'canvas')
- if (!canvas && TPEN.activeProject?.manifest) {
- // Canvas not directly resolvable, try to hydrate from all manifests
- await vault.prefetchManifests(TPEN.activeProject.manifest)
- // After manifests are cached, try again
- canvas = await vault.get(canvasID, 'canvas')
- }
+ let canvas = await vault.getWithFallback(canvasID, 'canvas', TPEN.activeProject?.manifest)
if (!canvas) {
imageCanvas.src = "../../assets/images/404_PageNotFound.jpeg"
return
@@ -658,14 +652,7 @@ export default class TranscriptionInterface extends HTMLElement {
const topImage = this.shadowRoot.querySelector('#topImage')
const bottomImage = this.shadowRoot.querySelector('#bottomImage')
topImage.manifest = bottomImage.manifest = TPEN.activeProject?.manifest?.[0]
- this.#page = await vault.get(pageID, 'annotationpage', true)
- if (!this.#page && TPEN.activeProject?.manifest) {
- // Try to hydrate from all manifests
- const manifestUrls = TPEN.activeProject?.manifest
- await vault.prefetchManifests(manifestUrls)
- // After manifests are cached, try again
- this.#page = await vault.get(pageID, 'annotationpage', true)
- }
+ this.#page = await vault.getWithFallback(pageID, 'annotationpage', TPEN.activeProject?.manifest, true)
const projectPage = TPEN.activeProject.layers.flatMap(layer => layer.pages || []).find(p => p.id.split('/').pop() === pageID.split('/').pop())
if (!this.#page || !projectPage) return
const { orderedItems, columnsInPage } = orderPageItemsByColumns(projectPage, this.#page)