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:
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user