Restrict page view tracking to READ_AND_CONFIRM mode

Previously, page view tracking and sessionStorage updates ran unconditionally. Now, this logic is only executed when READ_AND_CONFIRM is enabled, ensuring viewed/unviewed page state is only tracked when required. Updated both source and minified files accordingly.
This commit is contained in:
2026-01-20 10:38:37 +01:00
parent 513ec007eb
commit 1f233153cf
2 changed files with 32 additions and 29 deletions

View File

@@ -17,39 +17,42 @@
return !(annotation.isSignature || annotation.description === 'FRAME')
},
}).then((instance) => {
const totalPages = instance.totalPageCount || 0
const storageKeyAll = 'pspdf_all_pages_rendered'
const storageKeyUnviewed = 'pspdf_unviewed_pages'
if (READ_AND_CONFIRM) {
const totalPages = instance.totalPageCount || 0
const storageKeyAll = 'pspdf_all_pages_rendered'
const storageKeyUnviewed = 'pspdf_unviewed_pages'
let unviewed = totalPages > 0 ? Array.from({ length: totalPages }, (_, i) => i + 1) : []
let unviewed = totalPages > 0 ? Array.from({ length: totalPages }, (_, i) => i + 1) : []
const saveState = () => {
sessionStorage.setItem(storageKeyUnviewed, JSON.stringify(unviewed))
sessionStorage.setItem(storageKeyAll, JSON.stringify(unviewed.length === 0 && totalPages > 0))
}
const markPageViewed = (pageIndex) => {
const pageNumber = pageIndex + 1
if (pageNumber < 1 || pageNumber > totalPages) return
const idx = unviewed.indexOf(pageNumber)
if (idx >= 0) {
unviewed.splice(idx, 1)
saveState()
const saveState = () => {
sessionStorage.setItem(storageKeyUnviewed, JSON.stringify(unviewed))
sessionStorage.setItem(storageKeyAll, JSON.stringify(unviewed.length === 0 && totalPages > 0))
}
const markPageViewed = (pageIndex) => {
const pageNumber = pageIndex + 1
if (pageNumber < 1 || pageNumber > totalPages) return
const idx = unviewed.indexOf(pageNumber)
if (idx >= 0) {
unviewed.splice(idx, 1)
saveState()
}
}
// initial state in session storage
saveState()
// mark the initially visible page
const initialPage = instance.viewState?.currentPageIndex ?? 0
markPageViewed(initialPage)
instance.addEventListener('viewState.currentPageIndex.change', (pageIndex) => {
console.log('Active page:', pageIndex + 1)
markPageViewed(pageIndex)
})
}
// initial state in session storage
saveState()
// mark the initially visible page
const initialPage = instance.viewState?.currentPageIndex ?? 0
markPageViewed(initialPage)
instance.addEventListener('viewState.currentPageIndex.change', (pageIndex) => {
console.log('Active page:', pageIndex + 1)
markPageViewed(pageIndex)
})
return instance
})
}