From 4b9974e20a88c3acc3be229089c0eada71b71a47 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sat, 13 Jun 2026 23:19:19 +0600 Subject: [PATCH] Use duration overload for time related methods --- .../java/eu/kanade/presentation/components/AppBar.kt | 2 -- .../kanade/tachiyomi/data/download/DownloadCache.kt | 4 ++-- .../eu/kanade/tachiyomi/data/download/Downloader.kt | 3 ++- .../kanade/tachiyomi/data/download/model/Download.kt | 5 +++-- .../ui/browse/extension/ExtensionsScreenModel.kt | 3 +-- .../tachiyomi/ui/download/DownloadQueueScreenModel.kt | 5 +++-- .../kanade/tachiyomi/ui/library/LibraryScreenModel.kt | 4 ++-- .../eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt | 3 ++- .../tachiyomi/util/system/WorkManagerExtensions.kt | 3 ++- .../core/components/VerticalFastScroller.kt | 11 ++++++----- .../tachiyomi/presentation/core/util/Scrollbar.kt | 6 ++++-- 11 files changed, 27 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt index 019cba520..4bf782c06 100644 --- a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt +++ b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt @@ -58,8 +58,6 @@ import tachiyomi.presentation.core.util.runOnEnterKeyPressed import tachiyomi.presentation.core.util.secondaryItemAlpha import tachiyomi.presentation.core.util.showSoftKeyboard -const val SEARCH_DEBOUNCE_MILLIS = 250L - @Composable fun AppBar( title: String?, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt index 824053728..4b9795828 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt @@ -91,7 +91,7 @@ class DownloadCache( private val _isInitializing = MutableStateFlow(false) val isInitializing = _isInitializing - .debounce(1000L) // Don't notify if it finishes quickly enough + .debounce(1.seconds) // Don't notify if it finishes quickly enough .stateIn(scope, SharingStarted.WhileSubscribed(), false) private val diskCacheFile: File @@ -433,7 +433,7 @@ class DownloadCache( private fun updateDiskCache() { updateDiskCacheJob?.cancel() updateDiskCacheJob = scope.launchIO { - delay(1000) + delay(1.seconds) ensureActive() val bytes = ProtoBuf.encodeToByteArray(rootDownloadsDir) ensureActive() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 6891715db..bd3251205 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -60,6 +60,7 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.io.File import java.util.Locale +import kotlin.time.Duration.Companion.seconds /** * This class is the one in charge of downloading chapters. @@ -502,7 +503,7 @@ class Downloader( // Retry 3 times, waiting 2, 4 and 8 seconds between attempts. .retryWhen { _, attempt -> if (attempt < 3) { - delay((2L shl attempt.toInt()) * 1000) + delay((2L shl attempt.toInt()).seconds) true } else { false diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt index 1b14b0827..de5913865 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt @@ -17,6 +17,7 @@ import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.service.SourceManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import kotlin.time.Duration.Companion.milliseconds data class Download( val source: HttpSource, @@ -47,7 +48,7 @@ data class Download( if (pages == null) { emit(0) while (pages == null) { - delay(50) + delay(50.milliseconds) } } @@ -55,7 +56,7 @@ data class Download( emitAll(combine(progressFlows) { it.average().toInt() }) } .distinctUntilChanged() - .debounce(50) + .debounce(50.milliseconds) val progress: Int get() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt index 666c04424..e326d297d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt @@ -8,7 +8,6 @@ import dev.icerock.moko.resources.StringResource import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.extension.interactor.GetExtensionsByType import eu.kanade.domain.source.service.SourcePreferences -import eu.kanade.presentation.components.SEARCH_DEBOUNCE_MILLIS import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.InstallStep @@ -56,7 +55,7 @@ class ExtensionsScreenModel( combine( state.map { it.searchQuery } .distinctUntilChanged() - .debounce(SEARCH_DEBOUNCE_MILLIS) + .debounce(0.25.seconds) .map { searchQueryPredicate(it ?: "") }, currentDownloads, getExtensions.subscribe(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreenModel.kt index 3f8896632..8a4f869b5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreenModel.kt @@ -23,6 +23,7 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import kotlin.time.Duration.Companion.milliseconds class DownloadQueueScreenModel( private val downloadManager: DownloadManager = Injekt.get(), @@ -212,13 +213,13 @@ class DownloadQueueScreenModel( private fun launchProgressJob(download: Download) { val job = screenModelScope.launch { while (download.pages == null) { - delay(50) + delay(50.milliseconds) } val progressFlows = download.pages!!.map(Page::progressFlow) combine(progressFlows, Array::sum) .distinctUntilChanged() - .debounce(50) + .debounce(50.milliseconds) .collectLatest { onUpdateProgress(download) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 8e3ea97b2..74f4c4149 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -12,7 +12,6 @@ import eu.kanade.core.util.fastFilterNot import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.chapter.interactor.SetReadStatus import eu.kanade.domain.manga.interactor.UpdateManga -import eu.kanade.presentation.components.SEARCH_DEBOUNCE_MILLIS import eu.kanade.presentation.library.components.LibraryToolbarTitle import eu.kanade.presentation.manga.DownloadAction import eu.kanade.tachiyomi.data.cache.CoverCache @@ -65,6 +64,7 @@ import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import kotlin.random.Random +import kotlin.time.Duration.Companion.seconds class LibraryScreenModel( private val getLibraryManga: GetLibraryManga = Injekt.get(), @@ -91,7 +91,7 @@ class LibraryScreenModel( } screenModelScope.launchIO { combine( - state.map { it.searchQuery }.distinctUntilChanged().debounce(SEARCH_DEBOUNCE_MILLIS), + state.map { it.searchQuery }.distinctUntilChanged().debounce(0.25.seconds), getCategories.subscribe(), getFavoritesFlow(), combine(getTracksPerManga.subscribe(), getTrackingFiltersFlow(), ::Pair), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index f916208e1..a91928267 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -105,6 +105,7 @@ import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.io.ByteArrayOutputStream +import kotlin.time.Duration.Companion.seconds class ReaderActivity : BaseActivity() { @@ -947,7 +948,7 @@ class ReaderActivity : BaseActivity() { private fun setCustomBrightness(enabled: Boolean) { if (enabled) { readerPreferences.customBrightnessValue.changes() - .sample(100) + .sample(0.1.seconds) .onEach(::setCustomBrightnessValue) .launchIn(lifecycleScope) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt index a31857c0f..984a3299a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt @@ -7,6 +7,7 @@ import androidx.work.WorkManager import kotlinx.coroutines.delay import logcat.LogPriority import tachiyomi.core.common.util.system.logcat +import kotlin.time.Duration.Companion.seconds val Context.workManager: WorkManager get() = WorkManager.getInstance(this) @@ -28,7 +29,7 @@ fun WorkManager.isRunning(tag: String): Boolean { suspend fun CoroutineWorker.setForegroundSafely() { try { setForeground(getForegroundInfo()) - delay(500) + delay(0.5.seconds) } catch (e: IllegalStateException) { logcat(LogPriority.ERROR, e) { "Not allowed to set foreground job" } } diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt index 269aebc58..601cd8ec6 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/VerticalFastScroller.kt @@ -56,6 +56,7 @@ import kotlin.math.abs import kotlin.math.max import kotlin.math.min import kotlin.math.roundToInt +import kotlin.time.Duration.Companion.seconds /** * Draws vertical fast scroller to a lazy list @@ -174,11 +175,11 @@ fun VerticalFastScroller( val isThumbVisible = alpha.value > 0f LaunchedEffect(scrolled, alpha) { scrolled - .sample(100) + .sample(0.1.seconds) .collectLatest { if (thumbAllowed()) { alpha.snapTo(1f) - delay(ScrollBarVisibilityDurationMillis) + delay(ScrollBarVisibilityDuration) alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec) } else { alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec) @@ -364,11 +365,11 @@ fun VerticalGridFastScroller( val isThumbVisible = alpha.value > 0f LaunchedEffect(scrolled, alpha) { scrolled - .sample(100) + .sample(0.1.seconds) .collectLatest { if (thumbAllowed()) { alpha.snapTo(1f) - delay(ScrollBarVisibilityDurationMillis) + delay(ScrollBarVisibilityDuration) alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec) } else { alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec) @@ -463,7 +464,7 @@ object Scroller { private val ThumbLength = 48.dp private val ThumbThickness = 12.dp private val ThumbShape = RoundedCornerShape(ThumbThickness / 2) -private val ScrollBarVisibilityDurationMillis = 2000L +private val ScrollBarVisibilityDuration = 2.seconds private val ImmediateFadeOutAnimationSpec = tween( durationMillis = ViewConfiguration.getScrollBarFadeDuration(), ) diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Scrollbar.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Scrollbar.kt index 0bdbd7d98..be61d24d8 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Scrollbar.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Scrollbar.kt @@ -69,6 +69,8 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.sample import tachiyomi.presentation.core.components.Scroller.STICKY_HEADER_KEY_PREFIX +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.seconds /** * Draws horizontal scrollbar to a LazyList. @@ -216,10 +218,10 @@ private fun Modifier.drawScrollbar( val alpha = remember { Animatable(0f) } LaunchedEffect(scrolled, alpha) { scrolled - .sample(100) + .sample(0.1.seconds) .collectLatest { alpha.snapTo(1f) - delay(ScrollBarVisibilityDurationMillis) + delay(ScrollBarVisibilityDurationMillis.milliseconds) alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec) } }