Toggle enabled source in bulk

Maybe fixes #8439

(cherry picked from commit 280b0f42db2cc8c21ac046b11717cac6975746ca)
This commit is contained in:
arkon 2022-11-04 09:39:23 -04:00 committed by Jobobby04
parent a549189839
commit 4e37fbca17
6 changed files with 14 additions and 31 deletions

View File

@ -63,7 +63,6 @@ import eu.kanade.domain.source.interactor.InsertSavedSearch
import eu.kanade.domain.source.interactor.RenameSourceCategory import eu.kanade.domain.source.interactor.RenameSourceCategory
import eu.kanade.domain.source.interactor.SetSourceCategories import eu.kanade.domain.source.interactor.SetSourceCategories
import eu.kanade.domain.source.interactor.ToggleExcludeFromDataSaver import eu.kanade.domain.source.interactor.ToggleExcludeFromDataSaver
import eu.kanade.domain.source.interactor.ToggleSources
import eu.kanade.domain.source.repository.FeedSavedSearchRepository import eu.kanade.domain.source.repository.FeedSavedSearchRepository
import eu.kanade.domain.source.repository.SavedSearchRepository import eu.kanade.domain.source.repository.SavedSearchRepository
import eu.kanade.tachiyomi.source.online.MetadataSource import eu.kanade.tachiyomi.source.online.MetadataSource
@ -80,7 +79,6 @@ class SYDomainModule : InjektModule {
addFactory { GetShowLatest(get()) } addFactory { GetShowLatest(get()) }
addFactory { ToggleExcludeFromDataSaver(get()) } addFactory { ToggleExcludeFromDataSaver(get()) }
addFactory { SetSourceCategories(get()) } addFactory { SetSourceCategories(get()) }
addFactory { ToggleSources(get()) }
addFactory { SetMangaFilteredScanlators(get()) } addFactory { SetMangaFilteredScanlators(get()) }
addFactory { GetAllManga(get()) } addFactory { GetAllManga(get()) }
addFactory { GetMangaBySource(get()) } addFactory { GetMangaBySource(get()) }

View File

@ -18,6 +18,13 @@ class ToggleSource(
} }
} }
fun await(sourceIds: List<Long>, enable: Boolean) {
val transformedSourceIds = sourceIds.map { it.toString() }
preferences.disabledSources().getAndSet { disabled ->
if (enable) disabled.minus(transformedSourceIds) else disabled.plus(transformedSourceIds)
}
}
private fun isEnabled(sourceId: Long): Boolean { private fun isEnabled(sourceId: Long): Boolean {
return sourceId.toString() in preferences.disabledSources().get() return sourceId.toString() in preferences.disabledSources().get()
} }

View File

@ -1,20 +0,0 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.core.preference.getAndSet
class ToggleSources(
private val preferences: SourcePreferences,
) {
fun await(isEnable: Boolean, sources: List<Source>) {
preferences.disabledSources().getAndSet { disabledSources ->
if (isEnable) {
disabledSources - sources.map { it.id.toString() }.toSet()
} else {
disabledSources + sources.map { it.id.toString() }
}
}
}
}

View File

@ -118,7 +118,9 @@ class ExtensionDetailsPresenter(
} }
fun toggleSources(enable: Boolean) { fun toggleSources(enable: Boolean) {
extension?.sources?.forEach { toggleSource.await(it.id, enable) } extension?.sources
?.map { it.id }
?.let { toggleSource.await(it, enable) }
} }
private fun createUrl(url: String, pkgName: String, pkgFactory: String?, path: String = ""): String { private fun createUrl(url: String, pkgName: String, pkgFactory: String?, path: String = ""): String {

View File

@ -21,8 +21,8 @@ class SourceFilterController : FullComposeController<SourcesFilterPresenter>() {
presenter.toggleSource(source) presenter.toggleSource(source)
}, },
// SY --> // SY -->
onClickSources = { isEnable, sources -> onClickSources = { enable, sources ->
presenter.toggleSources(isEnable, sources) presenter.toggleSources(enable, sources)
}, },
// SY <-- // SY <--
) )

View File

@ -4,7 +4,6 @@ import android.os.Bundle
import eu.kanade.domain.source.interactor.GetLanguagesWithSources import eu.kanade.domain.source.interactor.GetLanguagesWithSources
import eu.kanade.domain.source.interactor.ToggleLanguage import eu.kanade.domain.source.interactor.ToggleLanguage
import eu.kanade.domain.source.interactor.ToggleSource import eu.kanade.domain.source.interactor.ToggleSource
import eu.kanade.domain.source.interactor.ToggleSources
import eu.kanade.domain.source.model.Source import eu.kanade.domain.source.model.Source
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.presentation.browse.SourcesFilterState import eu.kanade.presentation.browse.SourcesFilterState
@ -26,9 +25,6 @@ class SourcesFilterPresenter(
private val toggleSource: ToggleSource = Injekt.get(), private val toggleSource: ToggleSource = Injekt.get(),
private val toggleLanguage: ToggleLanguage = Injekt.get(), private val toggleLanguage: ToggleLanguage = Injekt.get(),
private val preferences: SourcePreferences = Injekt.get(), private val preferences: SourcePreferences = Injekt.get(),
// SY -->
private val toggleSources: ToggleSources = Injekt.get(),
// SY <--
) : BasePresenter<SourceFilterController>(), SourcesFilterState by state { ) : BasePresenter<SourceFilterController>(), SourcesFilterState by state {
private val _events = Channel<Event>(Int.MAX_VALUE) private val _events = Channel<Event>(Int.MAX_VALUE)
@ -81,8 +77,8 @@ class SourcesFilterPresenter(
} }
// SY --> // SY -->
fun toggleSources(isEnable: Boolean, sources: List<Source>) { fun toggleSources(enable: Boolean, sources: List<Source>) {
toggleSources.await(isEnable, sources) toggleSource.await(sources.map { it.id }, enable)
} }
// SY <-- // SY <--