Add DownloadDisabledSource interface

To disallow downloading on sources.
This commit is contained in:
AntsyLich 2022-08-12 21:46:34 +06:00
parent 71fc5d6d35
commit e37de9df32
5 changed files with 12 additions and 6 deletions

View File

@ -0,0 +1,6 @@
package eu.kanade.tachiyomi.source
/**
* Source for which downloading is disabled.
*/
interface DownloadDisabledSource

View File

@ -40,7 +40,7 @@ import java.util.zip.ZipFile
class LocalSource(
private val context: Context,
) : CatalogueSource, UnmeteredSource {
) : CatalogueSource, UnmeteredSource, DownloadDisabledSource {
private val json: Json by injectLazy()

View File

@ -122,4 +122,4 @@ fun Source.getNameForMangaInfo(): String {
}
}
fun Source.isLocalOrStub(): Boolean = id == LocalSource.ID || this is SourceManager.StubSource
fun Source.downloadingAllowed(): Boolean = this is DownloadDisabledSource

View File

@ -107,7 +107,7 @@ class SourceManager(
}
@Suppress("OverridingDeprecatedMember")
open inner class StubSource(val sourceData: SourceData) : Source {
open inner class StubSource(val sourceData: SourceData) : Source, DownloadDisabledSource {
override val id: Long = sourceData.id

View File

@ -32,7 +32,7 @@ import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.network.HttpException
import eu.kanade.tachiyomi.source.isLocalOrStub
import eu.kanade.tachiyomi.source.downloadingAllowed
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.base.controller.FullComposeController
import eu.kanade.tachiyomi.ui.base.controller.pushController
@ -121,7 +121,7 @@ class MangaController :
windowWidthSizeClass = calculateWindowWidthSizeClass(),
onBackClicked = router::popCurrentController,
onChapterClicked = this::openChapter,
onDownloadChapter = this::onDownloadChapters.takeIf { !successState.source.isLocalOrStub() },
onDownloadChapter = this::onDownloadChapters.takeIf { successState.source.downloadingAllowed() },
onAddToLibraryClicked = this::onFavoriteClick,
onWebViewClicked = this::openMangaInWebView.takeIf { isHttpSource },
onTrackingClicked = trackSheet::show.takeIf { successState.trackingAvailable },
@ -132,7 +132,7 @@ class MangaController :
onSearch = this::performSearch,
onCoverClicked = this::openCoverDialog,
onShareClicked = this::shareManga.takeIf { isHttpSource },
onDownloadActionClicked = this::runDownloadChapterAction.takeIf { !successState.source.isLocalOrStub() },
onDownloadActionClicked = this::runDownloadChapterAction.takeIf { successState.source.downloadingAllowed() },
onEditCategoryClicked = this::onCategoriesClick.takeIf { successState.manga.favorite },
onMigrateClicked = this::migrateManga.takeIf { successState.manga.favorite },
onMultiBookmarkClicked = presenter::bookmarkChapters,