Update all BaseViewer.getPageView/PDFThumbnailViewer.getThumbnail call-sites, in web/app.js, to check the returned value properly

Given how those are used, there *should* not be any situation in which e.g. `undefined` is ever returned. However, actually checking that the pageView/thumbnail is defined cannot hurt.

Also, re-factor `webViewerPageRendered` slightly since the `pageView` is no longer unconditionally necessary after the previous patches; note in particular that the thumbnails will only be updated when the sidebar *and* the thumbnailView is visible.

Finally, fixes a bug in `webViewerPageChanging` whereby an empty string would not be treated as a valid pageLabel and instead be replaced by `null`.
This commit is contained in:
Jonas Jenwald 2020-09-23 15:38:54 +02:00
parent e46055a92c
commit a4e5458774

View File

@ -2155,27 +2155,23 @@ function webViewerResetPermissions() {
}
function webViewerPageRendered({ pageNumber, timestamp, error }) {
const pageIndex = pageNumber - 1;
const pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);
// If the page is still visible when it has finished rendering,
// ensure that the page number input loading indicator is hidden.
if (pageNumber === PDFViewerApplication.page) {
PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);
}
// Prevent errors in the edge-case where the PDF document is removed *before*
// the 'pagerendered' event handler is invoked.
if (!pageView) {
return;
}
// Use the rendered page to set the corresponding thumbnail image.
if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(
pageIndex
const pageView = PDFViewerApplication.pdfViewer.getPageView(
/* index = */ pageNumber - 1
);
thumbnailView.setImage(pageView);
const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(
/* index = */ pageNumber - 1
);
if (pageView && thumbnailView) {
thumbnailView.setImage(pageView);
}
}
if (error) {
@ -2302,9 +2298,10 @@ function webViewerUpdateViewarea(evt) {
// Show/hide the loading indicator in the page number input element.
const currentPage = PDFViewerApplication.pdfViewer.getPageView(
PDFViewerApplication.page - 1
/* index = */ PDFViewerApplication.page - 1
);
const loading = currentPage.renderingState !== RenderingStates.FINISHED;
const loading =
(currentPage && currentPage.renderingState) !== RenderingStates.FINISHED;
PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
}
@ -2549,14 +2546,12 @@ function webViewerRotationChanging(evt) {
PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
}
function webViewerPageChanging(evt) {
const page = evt.pageNumber;
PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);
PDFViewerApplication.secondaryToolbar.setPageNumber(page);
function webViewerPageChanging({ pageNumber, pageLabel }) {
PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);
PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);
if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);
}
}