diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/media/local/pdf/PdfRendererManager.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/media/local/pdf/PdfRendererManager.kt index 21eeaa652b..8f6c507eb5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/media/local/pdf/PdfRendererManager.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/media/local/pdf/PdfRendererManager.kt @@ -43,11 +43,11 @@ class PdfRendererManager( mutex.withLock { withContext(Dispatchers.IO) { pdfRenderer = PdfRenderer(parcelFileDescriptor).apply { - (0 until pageCount).map { pageIndex -> - PdfPage(width, pageIndex, mutex, this, coroutineScope) - }.also { - mutablePdfPages.value = it - } + // Preload just 3 pages so we can render faster + val firstPages = loadPages(from = 0, to = 3) + mutablePdfPages.value = firstPages + val nextPages = loadPages(from = 3, to = pageCount) + mutablePdfPages.value = firstPages + nextPages } } } @@ -65,4 +65,10 @@ class PdfRendererManager( } } } + + private fun PdfRenderer.loadPages(from: Int, to: Int): List { + return (from until minOf(to, pageCount)).map { pageIndex -> + PdfPage(width, pageIndex, mutex, this, coroutineScope) + } + } }