Bladeren bron

Filter archive files as sequence

arkon 3 jaren geleden
bovenliggende
commit
aa5e428222

+ 3 - 5
app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt

@@ -42,18 +42,16 @@ class RarPageLoader(file: File) : PageLoader() {
      * comparator.
      */
     override fun getPages(): Observable<List<ReaderPage>> {
-        return archive.fileHeaders
+        return archive.fileHeaders.asSequence()
             .filter { !it.isDirectory && ImageUtil.isImage(it.fileName) { archive.getInputStream(it) } }
             .sortedWith { f1, f2 -> f1.fileName.compareToCaseInsensitiveNaturalOrder(f2.fileName) }
             .mapIndexed { i, header ->
-                val streamFn = { getStream(header) }
-
                 ReaderPage(i).apply {
-                    stream = streamFn
+                    stream = { getStream(header) }
                     status = Page.READY
                 }
             }
-            .let { Observable.just(it) }
+            .let { Observable.just(it.toList()) }
     }
 
     /**

+ 3 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt

@@ -37,17 +37,16 @@ class ZipPageLoader(file: File) : PageLoader() {
      * comparator.
      */
     override fun getPages(): Observable<List<ReaderPage>> {
-        return zip.entries().toList()
+        return zip.entries().asSequence()
             .filter { !it.isDirectory && ImageUtil.isImage(it.name) { zip.getInputStream(it) } }
             .sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) }
             .mapIndexed { i, entry ->
-                val streamFn = { zip.getInputStream(entry) }
                 ReaderPage(i).apply {
-                    stream = streamFn
+                    stream = { zip.getInputStream(entry) }
                     status = Page.READY
                 }
             }
-            .let { Observable.just(it) }
+            .let { Observable.just(it.toList()) }
     }
 
     /**