diff --git a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt index 45cc72aa8..211c99e7d 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt @@ -589,6 +589,9 @@ private fun MangaScreenSmallImpl( // SY --> onMergeClicked = onMergeClicked.takeUnless { state.showMergeInOverflow }, // SY <-- + // KMK --> + status = state.manga.status, + // KMK <-- ) } @@ -985,6 +988,9 @@ private fun MangaScreenLargeImpl( // SY --> onMergeClicked = onMergeClicked.takeUnless { state.showMergeInOverflow }, // SY <-- + // KMK --> + status = state.manga.status, + // KMK <-- ) // SY --> metadataDescription?.invoke( diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt index e476a8df8..5a526dc07 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt @@ -79,6 +79,8 @@ import eu.kanade.presentation.components.DropdownMenu import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.util.system.copyToClipboard +import tachiyomi.domain.library.service.LibraryPreferences +import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_NON_COMPLETED import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR import tachiyomi.i18n.kmk.KMR @@ -208,13 +210,21 @@ fun MangaActionRow( // SY --> onMergeClicked: (() -> Unit)?, // SY <-- + // KMK --> + status: Long, + // KMK <-- modifier: Modifier = Modifier, ) { + // KMK --> + val libraryPreferences: LibraryPreferences = Injekt.get() + val restrictions = libraryPreferences.autoUpdateMangaRestrictions().get() + val isSkipCompleted = MANGA_NON_COMPLETED !in restrictions || status != SManga.COMPLETED.toLong() + // KMK <-- val defaultActionButtonColor = MaterialTheme.colorScheme.onSurface.copy(alpha = DISABLED_ALPHA) // TODO: show something better when using custom interval val nextUpdateDays = remember(nextUpdate) { - return@remember if (nextUpdate != null) { + return@remember if (nextUpdate != null && isSkipCompleted) { val now = Instant.now() now.until(nextUpdate, ChronoUnit.DAYS).toInt().coerceAtLeast(0) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index 6b68b436a..19cbe4234 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -317,7 +317,14 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet false } - MANGA_OUTSIDE_RELEASE_PERIOD in restrictions && it.manga.nextUpdate > fetchWindowUpperBound -> { + MANGA_OUTSIDE_RELEASE_PERIOD in restrictions && + ( + it.manga.nextUpdate > fetchWindowUpperBound || + // KMK --> + MANGA_NON_COMPLETED in restrictions && + it.manga.status.toInt() == SManga.COMPLETED + // KMK <-- + ) -> { skippedUpdates.add( it.manga to context.stringResource(MR.strings.skipped_reason_not_in_release_period), diff --git a/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt b/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt index 4f41b18d6..dcdab1304 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt @@ -1,6 +1,5 @@ package tachiyomi.domain.manga.model -import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.UpdateStrategy import tachiyomi.core.common.preference.TriState import tachiyomi.domain.manga.interactor.GetCustomMangaInfo @@ -67,8 +66,11 @@ data class Manga( val expectedNextUpdate: Instant? get() = nextUpdate - .takeIf { status != SManga.COMPLETED.toLong() } - ?.let { Instant.ofEpochMilli(it) } + /* KMK --> + Always predict release date even for Completed entries + .takeIf { status != SManga.COMPLETED.toLong() }? + KMK <-- */ + .let { Instant.ofEpochMilli(it) } val sorting: Long get() = chapterFlags and CHAPTER_SORTING_MASK