|
|
|
@ -129,10 +129,8 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() {
|
|
|
|
|
return db.getLibraryMangas().asRxObservable()
|
|
|
|
|
.flatMap { mangas ->
|
|
|
|
|
Observable.from(mangas)
|
|
|
|
|
.filter {
|
|
|
|
|
// Filter library by options
|
|
|
|
|
filterLibrary(it)
|
|
|
|
|
}
|
|
|
|
|
// Filter library by options
|
|
|
|
|
.filter { filterManga(it) }
|
|
|
|
|
.groupBy { it.category }
|
|
|
|
|
.flatMap { group -> group.toList().map { Pair(group.key, it) } }
|
|
|
|
|
.toMap({ it.first }, { it.second })
|
|
|
|
@ -156,12 +154,15 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Filter library by preference
|
|
|
|
|
* Filters an entry of the library.
|
|
|
|
|
*
|
|
|
|
|
* @param manga from library
|
|
|
|
|
* @return filter status
|
|
|
|
|
* @param manga a favorite manga from the database.
|
|
|
|
|
* @return true if the entry is included, false otherwise.
|
|
|
|
|
*/
|
|
|
|
|
fun filterLibrary(manga: Manga): Boolean {
|
|
|
|
|
fun filterManga(manga: Manga): Boolean {
|
|
|
|
|
// Filter out manga without source
|
|
|
|
|
val source = sourceManager.get(manga.source) ?: return false
|
|
|
|
|
|
|
|
|
|
val prefFilterDownloaded = preferences.filterDownloaded().getOrDefault()
|
|
|
|
|
val prefFilterUnread = preferences.filterUnread().getOrDefault()
|
|
|
|
|
|
|
|
|
@ -178,7 +179,7 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (prefFilterDownloaded) {
|
|
|
|
|
val mangaDir = downloadManager.getAbsoluteMangaDirectory(sourceManager.get(manga.source)!!, manga)
|
|
|
|
|
val mangaDir = downloadManager.getAbsoluteMangaDirectory(source, manga)
|
|
|
|
|
|
|
|
|
|
if (mangaDir.exists()) {
|
|
|
|
|
for (file in mangaDir.listFiles()) {
|
|
|
|
|