Fix issues with feed reloading all the time

This commit is contained in:
Jobobby04 2023-04-09 20:25:29 -04:00
parent d532ea8137
commit 28fe7fec06
2 changed files with 19 additions and 12 deletions

View File

@ -47,8 +47,6 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import xyz.nulldev.ts.api.http.serializer.FilterSerializer
import java.util.concurrent.Executors
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
import tachiyomi.domain.manga.model.Manga as DomainManga
/**
@ -72,7 +70,7 @@ open class FeedScreenModel(
val events = _events.receiveAsFlow()
private val coroutineDispatcher = Executors.newFixedThreadPool(1).asCoroutineDispatcher()
var lastRefresh = System.currentTimeMillis().milliseconds
var pushed: Boolean = false
init {
getFeedSavedSearchGlobal.subscribe()
@ -98,12 +96,7 @@ open class FeedScreenModel(
}
fun init() {
if (lastRefresh - System.currentTimeMillis().milliseconds > 30.seconds) return
refresh()
}
fun refresh() {
lastRefresh = System.currentTimeMillis().milliseconds
pushed = false
coroutineScope.launchIO {
val newItems = state.value.items?.map { it.copy(results = null) } ?: return@launchIO
mutableState.update { state ->

View File

@ -3,14 +3,17 @@ package eu.kanade.tachiyomi.ui.browse.feed
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.stack.StackEvent
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
import eu.kanade.presentation.browse.FeedAddDialog
import eu.kanade.presentation.browse.FeedAddSearchDialog
import eu.kanade.presentation.browse.FeedDeleteConfirmDialog
@ -27,11 +30,22 @@ import tachiyomi.domain.source.interactor.GetRemoteManga
@Composable
fun Screen.feedTab(): TabContent {
val navigator = LocalNavigator.currentOrThrow
val tabNavigator = LocalTabNavigator.current
val screenModel = rememberScreenModel { FeedScreenModel() }
val state by screenModel.state.collectAsState()
LaunchedEffect(Unit) {
screenModel.init()
DisposableEffect(navigator.lastEvent) {
if (navigator.lastEvent == StackEvent.Push) {
screenModel.pushed = true
} else if (!screenModel.pushed) {
screenModel.init()
}
onDispose {
if (navigator.lastEvent == StackEvent.Idle && screenModel.pushed) {
screenModel.pushed = false
}
}
}
return TabContent(
@ -72,7 +86,7 @@ fun Screen.feedTab(): TabContent {
onClickManga = { manga ->
navigator.push(MangaScreen(manga.id, true))
},
onRefresh = screenModel::refresh,
onRefresh = screenModel::init,
getMangaState = { manga, source -> screenModel.getManga(initialManga = manga, source = source) },
)