From f5c7e6b6cd37aa8a5d8b3f2b303a2285fab2ab7e Mon Sep 17 00:00:00 2001 From: Damontecres Date: Wed, 22 Oct 2025 18:19:45 -0400 Subject: [PATCH] Refresh guide in background when returning to page --- .../wholphin/ui/detail/livetv/LiveTvViewModel.kt | 11 +++++++---- .../wholphin/ui/detail/livetv/TvGuideGrid.kt | 4 +++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt index def68570..e26dd5da 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt @@ -50,8 +50,8 @@ class LiveTvViewModel ) : ViewModel() { val loading = MutableLiveData(LoadingState.Pending) - val start = - LocalDateTime.now().truncatedTo(ChronoUnit.HOURS) + lateinit var start: LocalDateTime + private set private lateinit var channelsIdToIndex: Map private val mutex = Mutex() @@ -62,8 +62,11 @@ class LiveTvViewModel val fetchingItem = MutableLiveData(LoadingState.Pending) val fetchedItem = MutableLiveData(null) - fun init() { -// loading.value = LoadingState.Loading + fun init(firstLoad: Boolean) { + start = LocalDateTime.now().truncatedTo(ChronoUnit.HOURS) + if (!firstLoad) { + loading.value = LoadingState.Loading + } viewModelScope.launch(Dispatchers.IO + LoadingExceptionHandler(loading, "Could not fetch channels")) { val channelData by api.liveTvApi.getLiveTvChannels( GetLiveTvChannelsRequest( diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/TvGuideGrid.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/TvGuideGrid.kt index 842155c0..40e26b17 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/TvGuideGrid.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/TvGuideGrid.kt @@ -72,8 +72,10 @@ fun TvGuideGrid( modifier: Modifier = Modifier, viewModel: LiveTvViewModel = hiltViewModel(), ) { + var firstLoad by rememberSaveable { mutableStateOf(true) } LaunchedEffect(Unit) { - viewModel.init() + viewModel.init(firstLoad) + firstLoad = false } val loading by viewModel.loading.observeAsState(LoadingState.Pending) val channels by viewModel.channels.observeAsState(listOf())