Fixes
This commit is contained in:
@@ -87,5 +87,5 @@ class DetailsInteractor @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun findLocal(seed: Manga) = localMangaRepository.getRemoteManga(seed)
|
suspend fun findRemote(seed: Manga) = localMangaRepository.getRemoteManga(seed)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.koitharu.kotatsu.details.domain
|
|||||||
import org.koitharu.kotatsu.core.db.MangaDatabase
|
import org.koitharu.kotatsu.core.db.MangaDatabase
|
||||||
import org.koitharu.kotatsu.core.model.findChapter
|
import org.koitharu.kotatsu.core.model.findChapter
|
||||||
import org.koitharu.kotatsu.core.model.isLocal
|
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.core.parser.MangaRepository
|
||||||
import org.koitharu.kotatsu.history.data.PROGRESS_NONE
|
import org.koitharu.kotatsu.history.data.PROGRESS_NONE
|
||||||
import org.koitharu.kotatsu.local.data.LocalMangaRepository
|
import org.koitharu.kotatsu.local.data.LocalMangaRepository
|
||||||
@@ -13,6 +14,7 @@ class ProgressUpdateUseCase @Inject constructor(
|
|||||||
private val mangaRepositoryFactory: MangaRepository.Factory,
|
private val mangaRepositoryFactory: MangaRepository.Factory,
|
||||||
private val database: MangaDatabase,
|
private val database: MangaDatabase,
|
||||||
private val localMangaRepository: LocalMangaRepository,
|
private val localMangaRepository: LocalMangaRepository,
|
||||||
|
private val networkState: NetworkState,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
suspend operator fun invoke(manga: Manga): Float {
|
suspend operator fun invoke(manga: Manga): Float {
|
||||||
@@ -22,6 +24,9 @@ class ProgressUpdateUseCase @Inject constructor(
|
|||||||
} else {
|
} else {
|
||||||
manga
|
manga
|
||||||
}
|
}
|
||||||
|
if (!seed.isLocal && !networkState.value) {
|
||||||
|
return PROGRESS_NONE
|
||||||
|
}
|
||||||
val repo = mangaRepositoryFactory.create(seed.source)
|
val repo = mangaRepositoryFactory.create(seed.source)
|
||||||
val details = if (manga.source != seed.source || seed.chapters.isNullOrEmpty()) {
|
val details = if (manga.source != seed.source || seed.chapters.isNullOrEmpty()) {
|
||||||
repo.getDetails(seed)
|
repo.getDetails(seed)
|
||||||
|
|||||||
@@ -149,15 +149,13 @@ class DetailsViewModel @Inject constructor(
|
|||||||
val scrobblingInfo: StateFlow<List<ScrobblingInfo>> = interactor.observeScrobblingInfo(mangaId)
|
val scrobblingInfo: StateFlow<List<ScrobblingInfo>> = interactor.observeScrobblingInfo(mangaId)
|
||||||
.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, emptyList())
|
.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, emptyList())
|
||||||
|
|
||||||
val relatedManga: StateFlow<List<MangaItemModel>> = manga
|
val relatedManga: StateFlow<List<MangaItemModel>> = manga.mapLatest {
|
||||||
.mapLatest {
|
if (it != null && settings.isRelatedMangaEnabled) {
|
||||||
if (it != null && settings.isRelatedMangaEnabled) {
|
relatedMangaUseCase.invoke(it)?.toUi(ListMode.GRID, extraProvider).orEmpty()
|
||||||
relatedMangaUseCase.invoke(it)?.toUi(ListMode.GRID, extraProvider).orEmpty()
|
} else {
|
||||||
} else {
|
emptyList()
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.stateIn(viewModelScope, SharingStarted.Lazily, emptyList())
|
}.stateIn(viewModelScope, SharingStarted.Lazily, emptyList())
|
||||||
|
|
||||||
val branches: StateFlow<List<MangaBranch>> = combine(
|
val branches: StateFlow<List<MangaBranch>> = combine(
|
||||||
details,
|
details,
|
||||||
@@ -217,7 +215,7 @@ class DetailsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
launchJob(Dispatchers.Default) {
|
launchJob(Dispatchers.Default) {
|
||||||
val manga = details.firstOrNull { it != null && it.isLocal } ?: return@launchJob
|
val manga = details.firstOrNull { it != null && it.isLocal } ?: return@launchJob
|
||||||
remoteManga.value = interactor.findLocal(manga.toManga())
|
remoteManga.value = interactor.findRemote(manga.toManga())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.awaitUniqueWorkInfoByName
|
||||||
import org.koitharu.kotatsu.core.util.ext.writeAllCancellable
|
import org.koitharu.kotatsu.core.util.ext.writeAllCancellable
|
||||||
import org.koitharu.kotatsu.settings.work.PeriodicWorkScheduler
|
import org.koitharu.kotatsu.settings.work.PeriodicWorkScheduler
|
||||||
import org.koitharu.kotatsu.suggestions.ui.SuggestionsWorker
|
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -67,7 +66,7 @@ class PeriodicalBackupWorker @AssistedInject constructor(
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
constraints.setRequiresDeviceIdle(true)
|
constraints.setRequiresDeviceIdle(true)
|
||||||
}
|
}
|
||||||
val request = PeriodicWorkRequestBuilder<SuggestionsWorker>(
|
val request = PeriodicWorkRequestBuilder<PeriodicalBackupWorker>(
|
||||||
settings.periodicalBackupFrequency,
|
settings.periodicalBackupFrequency,
|
||||||
TimeUnit.HOURS,
|
TimeUnit.HOURS,
|
||||||
).setConstraints(constraints.build())
|
).setConstraints(constraints.build())
|
||||||
|
|||||||
Reference in New Issue
Block a user