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

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

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

@ -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

@ -107,7 +107,7 @@ class SourceManager(
} }
@Suppress("OverridingDeprecatedMember") @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 override val id: Long = sourceData.id

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