diff --git a/komga-webui/src/functions/book-spreads.ts b/komga-webui/src/functions/book-spreads.ts index 54a864588..7071419c9 100644 --- a/komga-webui/src/functions/book-spreads.ts +++ b/komga-webui/src/functions/book-spreads.ts @@ -9,20 +9,12 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay if (pageLayout !== PagedReaderLayout.SINGLE_PAGE) { const spreads = [] as PageDtoWithUrl[][] const pagesClone = cloneDeep(pages) - let lastPages = undefined if (pageLayout === PagedReaderLayout.DOUBLE_PAGES) { const firstPage = pagesClone.shift() as PageDtoWithUrl if (isPageLandscape(firstPage)) spreads.push([firstPage] as PageDtoWithUrl[]) else spreads.push([createEmptyPage(firstPage), firstPage] as PageDtoWithUrl[]) - if (pagesClone.length > 0) { - const lastPage = pagesClone.pop() as PageDtoWithUrl - if(isPageLandscape(lastPage)) - lastPages = [lastPage] as PageDtoWithUrl[] - else - lastPages = [lastPage, createEmptyPage(lastPage)] as PageDtoWithUrl[] - } } while (pagesClone.length > 0) { const p = pagesClone.shift() as PageDtoWithUrl @@ -30,19 +22,23 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay spreads.push([p]) } else { if (pagesClone.length > 0) { - const p2 = pagesClone.shift() as PageDtoWithUrl - if (isPageLandscape(p2)) { - spreads.push([p, createEmptyPage(p)]) - spreads.push([p2]) + const [prevPage] = spreads.length > 0 ? (spreads[spreads.length - 1] as PageDtoWithUrl[]) : [] + if (pageLayout === PagedReaderLayout.DOUBLE_NO_COVER && isPageLandscape(prevPage)){ + spreads.push([createEmptyPage(p), p]) } else { - spreads.push([p, p2]) + const p2 = pagesClone.shift() as PageDtoWithUrl + if (isPageLandscape(p2)) { + spreads.push([p, createEmptyPage(p)]) + spreads.push([p2]) + } else { + spreads.push([p, p2]) + } } } else { spreads.push([p, createEmptyPage(p)]) } } } - if (lastPages) spreads.push(lastPages) return spreads } else { return pages.map(p => [p]) diff --git a/komga-webui/tests/unit/functions/book-spreads.spec.ts b/komga-webui/tests/unit/functions/book-spreads.spec.ts index df382912f..7b2c85dd6 100644 --- a/komga-webui/tests/unit/functions/book-spreads.spec.ts +++ b/komga-webui/tests/unit/functions/book-spreads.spec.ts @@ -95,12 +95,12 @@ describe('Double Pages', () => { ] as PageDtoWithUrl[] const spreads = buildSpreads(pages, pageLayout) - - expect(spreads.length).toEqual(4) + // Expecting [E, 1], [2, 3], [4, 5] + expect(spreads.length).toEqual(3) expect(spreads[0].length).toEqual(2) - expect(spreads[0][1].number).toEqual(1) expect(spreads[0][0].number).toEqual(0) // empty page + expect(spreads[0][1].number).toEqual(1) expect(spreads[1].length).toEqual(2) expect(spreads[1][0].number).toEqual(2) @@ -108,10 +108,7 @@ describe('Double Pages', () => { expect(spreads[2].length).toEqual(2) expect(spreads[2][0].number).toEqual(4) - - expect(spreads[3].length).toEqual(2) - expect(spreads[3][0].number).toEqual(5) - expect(spreads[3][1].number).toEqual(0) // empty page + expect(spreads[2][1].number).toEqual(5) }) })