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) + } }