Skip to content

Commit

Permalink
fix(worker): remove observer after leaving composition
Browse files Browse the repository at this point in the history
  • Loading branch information
JunkFood02 committed Feb 13, 2024
1 parent 6ed42a2 commit 8f4d241
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
11 changes: 9 additions & 2 deletions app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import androidx.compose.material.icons.rounded.Refresh
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
Expand Down Expand Up @@ -115,8 +116,14 @@ fun FeedsPage(

val owner = LocalLifecycleOwner.current
var isSyncing by remember { mutableStateOf(false) }
homeViewModel.syncWorkLiveData.observe(owner) {
it?.let { isSyncing = it.any { it.state == WorkInfo.State.RUNNING } }

DisposableEffect(owner) {
homeViewModel.syncWorkLiveData.observe(owner) { workInfoList ->
workInfoList.let {
isSyncing = it.any { workInfo -> workInfo.state == WorkInfo.State.RUNNING }
}
}
onDispose { homeViewModel.syncWorkLiveData.removeObservers(owner) }
}

val infiniteTransition = rememberInfiniteTransition()
Expand Down
11 changes: 9 additions & 2 deletions app/src/main/java/me/ash/reader/ui/page/home/flow/FlowPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,17 @@ fun FlowPage(

val owner = LocalLifecycleOwner.current
var isSyncing by remember { mutableStateOf(false) }
homeViewModel.syncWorkLiveData.observe(owner) {
it?.let { isSyncing = it.any { it.state == WorkInfo.State.RUNNING } }

DisposableEffect(owner) {
homeViewModel.syncWorkLiveData.observe(owner) { workInfoList ->
workInfoList.let {
isSyncing = it.any { workInfo -> workInfo.state == WorkInfo.State.RUNNING }
}
}
onDispose { homeViewModel.syncWorkLiveData.removeObservers(owner) }
}


val onToggleStarred: State<(ArticleWithFeed) -> Unit> = rememberUpdatedState {
flowViewModel.updateStarredStatus(
articleId = it.article.id,
Expand Down

0 comments on commit 8f4d241

Please sign in to comment.