commit
5733429682
@ -13,7 +13,6 @@ import com.bluelinelabs.conductor.RouterTransaction
|
|||||||
import com.bluelinelabs.conductor.support.RouterPagerAdapter
|
import com.bluelinelabs.conductor.support.RouterPagerAdapter
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.jakewharton.rxrelay.BehaviorRelay
|
import com.jakewharton.rxrelay.BehaviorRelay
|
||||||
import com.jakewharton.rxrelay.PublishRelay
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
@ -63,8 +62,6 @@ class MangaController : RxController<PagerControllerBinding>, TabbedController {
|
|||||||
|
|
||||||
val fromSource = args.getBoolean(FROM_SOURCE_EXTRA, false)
|
val fromSource = args.getBoolean(FROM_SOURCE_EXTRA, false)
|
||||||
|
|
||||||
val mangaFavoriteRelay: PublishRelay<Boolean> = PublishRelay.create()
|
|
||||||
|
|
||||||
private val trackingIconRelay: BehaviorRelay<Boolean> = BehaviorRelay.create()
|
private val trackingIconRelay: BehaviorRelay<Boolean> = BehaviorRelay.create()
|
||||||
|
|
||||||
private var trackingIconSubscription: Subscription? = null
|
private var trackingIconSubscription: Subscription? = null
|
||||||
|
@ -97,7 +97,7 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) :
|
|||||||
override fun createPresenter(): MangaInfoChaptersPresenter {
|
override fun createPresenter(): MangaInfoChaptersPresenter {
|
||||||
val ctrl = parentController as MangaController
|
val ctrl = parentController as MangaController
|
||||||
return MangaInfoChaptersPresenter(
|
return MangaInfoChaptersPresenter(
|
||||||
ctrl.manga!!, ctrl.source!!, ctrl.mangaFavoriteRelay
|
ctrl.manga!!, ctrl.source!!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,6 +381,11 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) :
|
|||||||
toggleFavorite()
|
toggleFavorite()
|
||||||
activity?.toast(activity?.getString(R.string.manga_removed_library))
|
activity?.toast(activity?.getString(R.string.manga_removed_library))
|
||||||
} else {
|
} else {
|
||||||
|
addToLibrary(manga)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addToLibrary(manga: Manga) {
|
||||||
val categories = presenter.getCategories()
|
val categories = presenter.getCategories()
|
||||||
val defaultCategoryId = preferences.defaultCategory()
|
val defaultCategoryId = preferences.defaultCategory()
|
||||||
val defaultCategory = categories.find { it.id == defaultCategoryId }
|
val defaultCategory = categories.find { it.id == defaultCategoryId }
|
||||||
@ -412,7 +417,6 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggles the favorite status and asks for confirmation to delete downloaded chapters.
|
* Toggles the favorite status and asks for confirmation to delete downloaded chapters.
|
||||||
@ -755,11 +759,12 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) :
|
|||||||
|
|
||||||
private fun downloadChapters(chapters: List<ChapterItem>) {
|
private fun downloadChapters(chapters: List<ChapterItem>) {
|
||||||
val view = view
|
val view = view
|
||||||
|
val manga = presenter.manga
|
||||||
presenter.downloadChapters(chapters)
|
presenter.downloadChapters(chapters)
|
||||||
if (view != null && !presenter.manga.favorite) {
|
if (view != null && !manga.favorite) {
|
||||||
binding.recycler.snack(view.context.getString(R.string.snack_add_to_library), Snackbar.LENGTH_INDEFINITE) {
|
binding.recycler.snack(view.context.getString(R.string.snack_add_to_library), Snackbar.LENGTH_INDEFINITE) {
|
||||||
setAction(R.string.action_add) {
|
setAction(R.string.action_add) {
|
||||||
presenter.addToLibrary()
|
addToLibrary(manga)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,6 @@ import uy.kohesive.injekt.api.get
|
|||||||
class MangaInfoChaptersPresenter(
|
class MangaInfoChaptersPresenter(
|
||||||
val manga: Manga,
|
val manga: Manga,
|
||||||
val source: Source,
|
val source: Source,
|
||||||
private val mangaFavoriteRelay: PublishRelay<Boolean>,
|
|
||||||
val preferences: PreferencesHelper = Injekt.get(),
|
val preferences: PreferencesHelper = Injekt.get(),
|
||||||
private val db: DatabaseHelper = Injekt.get(),
|
private val db: DatabaseHelper = Injekt.get(),
|
||||||
private val downloadManager: DownloadManager = Injekt.get(),
|
private val downloadManager: DownloadManager = Injekt.get(),
|
||||||
@ -80,11 +79,6 @@ class MangaInfoChaptersPresenter(
|
|||||||
getMangaObservable()
|
getMangaObservable()
|
||||||
.subscribeLatestCache({ view, manga -> view.onNextMangaInfo(manga, source) })
|
.subscribeLatestCache({ view, manga -> view.onNextMangaInfo(manga, source) })
|
||||||
|
|
||||||
// Update favorite status
|
|
||||||
mangaFavoriteRelay.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe { setFavorite(it) }
|
|
||||||
.apply { add(this) }
|
|
||||||
|
|
||||||
// Prepare the relay.
|
// Prepare the relay.
|
||||||
chaptersRelay.flatMap { applyChapterFilters(it) }
|
chaptersRelay.flatMap { applyChapterFilters(it) }
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
@ -162,13 +156,6 @@ class MangaInfoChaptersPresenter(
|
|||||||
return manga.favorite
|
return manga.favorite
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setFavorite(favorite: Boolean) {
|
|
||||||
if (manga.favorite == favorite) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
toggleFavorite()
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the manga has any downloads.
|
* Returns true if the manga has any downloads.
|
||||||
*/
|
*/
|
||||||
@ -503,13 +490,6 @@ class MangaInfoChaptersPresenter(
|
|||||||
refreshChapters()
|
refreshChapters()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds manga to library
|
|
||||||
*/
|
|
||||||
fun addToLibrary() {
|
|
||||||
mangaFavoriteRelay.call(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the active display mode.
|
* Sets the active display mode.
|
||||||
* @param mode the mode to set.
|
* @param mode the mode to set.
|
||||||
|
Loading…
Reference in New Issue
Block a user