From afe50a9ed66e5e4b37560636ad9f529bede86aa6 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 27 Oct 2023 13:58:04 +0300 Subject: [PATCH] Fixes --- .../kotatsu/details/domain/DetailsInteractor.kt | 2 +- .../details/domain/ProgressUpdateUseCase.kt | 5 +++++ .../kotatsu/details/ui/DetailsViewModel.kt | 16 +++++++--------- .../settings/backup/PeriodicalBackupWorker.kt | 3 +-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsInteractor.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsInteractor.kt index 339346834..76df746e0 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsInteractor.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsInteractor.kt @@ -87,5 +87,5 @@ class DetailsInteractor @Inject constructor( } } - suspend fun findLocal(seed: Manga) = localMangaRepository.getRemoteManga(seed) + suspend fun findRemote(seed: Manga) = localMangaRepository.getRemoteManga(seed) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/ProgressUpdateUseCase.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/ProgressUpdateUseCase.kt index b82965f10..bdec62aae 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/ProgressUpdateUseCase.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/ProgressUpdateUseCase.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.details.domain import org.koitharu.kotatsu.core.db.MangaDatabase import org.koitharu.kotatsu.core.model.findChapter import org.koitharu.kotatsu.core.model.isLocal +import org.koitharu.kotatsu.core.os.NetworkState import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.history.data.PROGRESS_NONE import org.koitharu.kotatsu.local.data.LocalMangaRepository @@ -13,6 +14,7 @@ class ProgressUpdateUseCase @Inject constructor( private val mangaRepositoryFactory: MangaRepository.Factory, private val database: MangaDatabase, private val localMangaRepository: LocalMangaRepository, + private val networkState: NetworkState, ) { suspend operator fun invoke(manga: Manga): Float { @@ -22,6 +24,9 @@ class ProgressUpdateUseCase @Inject constructor( } else { manga } + if (!seed.isLocal && !networkState.value) { + return PROGRESS_NONE + } val repo = mangaRepositoryFactory.create(seed.source) val details = if (manga.source != seed.source || seed.chapters.isNullOrEmpty()) { repo.getDetails(seed) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt index 7a1b8d3db..1cce50a79 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt @@ -149,15 +149,13 @@ class DetailsViewModel @Inject constructor( val scrobblingInfo: StateFlow> = interactor.observeScrobblingInfo(mangaId) .stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, emptyList()) - val relatedManga: StateFlow> = manga - .mapLatest { - if (it != null && settings.isRelatedMangaEnabled) { - relatedMangaUseCase.invoke(it)?.toUi(ListMode.GRID, extraProvider).orEmpty() - } else { - emptyList() - } + val relatedManga: StateFlow> = manga.mapLatest { + if (it != null && settings.isRelatedMangaEnabled) { + relatedMangaUseCase.invoke(it)?.toUi(ListMode.GRID, extraProvider).orEmpty() + } else { + emptyList() } - .stateIn(viewModelScope, SharingStarted.Lazily, emptyList()) + }.stateIn(viewModelScope, SharingStarted.Lazily, emptyList()) val branches: StateFlow> = combine( details, @@ -217,7 +215,7 @@ class DetailsViewModel @Inject constructor( } launchJob(Dispatchers.Default) { val manga = details.firstOrNull { it != null && it.isLocal } ?: return@launchJob - remoteManga.value = interactor.findLocal(manga.toManga()) + remoteManga.value = interactor.findRemote(manga.toManga()) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt index 7c55b75ff..8f929ec3e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt @@ -22,7 +22,6 @@ import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.util.ext.awaitUniqueWorkInfoByName import org.koitharu.kotatsu.core.util.ext.writeAllCancellable import org.koitharu.kotatsu.settings.work.PeriodicWorkScheduler -import org.koitharu.kotatsu.suggestions.ui.SuggestionsWorker import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -67,7 +66,7 @@ class PeriodicalBackupWorker @AssistedInject constructor( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { constraints.setRequiresDeviceIdle(true) } - val request = PeriodicWorkRequestBuilder( + val request = PeriodicWorkRequestBuilder( settings.periodicalBackupFrequency, TimeUnit.HOURS, ).setConstraints(constraints.build())