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.SetSourceCategories
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.SavedSearchRepository
import eu.kanade.tachiyomi.source.online.MetadataSource
@ -80,7 +79,6 @@ class SYDomainModule : InjektModule {
addFactory { GetShowLatest(get()) }
addFactory { ToggleExcludeFromDataSaver(get()) }
addFactory { SetSourceCategories(get()) }
addFactory { ToggleSources(get()) }
addFactory { SetMangaFilteredScanlators(get()) }
addFactory { GetAllManga(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 {
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) {
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 {

View File

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

View File

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