From ccbce17793eac80e1348633b31c6aae8ecdd300d Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Thu, 15 Aug 2019 14:08:46 +0100 Subject: [PATCH] #1376 Unable to delete old zim files after re-install --- .../kiwix/kiwixmobile/database/newdb/dao/NewBookDao.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/database/newdb/dao/NewBookDao.kt b/app/src/main/java/org/kiwix/kiwixmobile/database/newdb/dao/NewBookDao.kt index fbef5c8b5..d2f1a5b40 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/database/newdb/dao/NewBookDao.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/database/newdb/dao/NewBookDao.kt @@ -30,6 +30,8 @@ import javax.inject.Inject class NewBookDao @Inject constructor(private val box: Box) { fun books() = box.asFlowable() + .doOnNext(::removeBooksThatDoNotExist) + .map { books -> books.filter { it.file.exists() } } .map { it.map(::BookOnDisk) } fun getBooks() = box.all.map(::BookOnDisk) @@ -52,4 +54,12 @@ class NewBookDao @Inject constructor(private val box: Box) { fun migrationInsert(books: ArrayList) { insert(books.map { BookOnDisk(book = it, file = it.file) }) } + + private fun removeBooksThatDoNotExist(books: MutableList) { + delete(books.filterNot { it.file.exists() }) + } + + private fun delete(books: List) { + box.remove(books) + } }