Skip to content

Commit 2e09db4

Browse files
committed
feat: add automatic sync on MainScreen resume
- Add lifecycle observer to detect when MainScreen is resumed - Automatically trigger data sync when app returns to foreground - Import lifecycle dependencies (LocalLifecycleOwner, Lifecycle, LifecycleEventObserver) - Use DisposableEffect for proper lifecycle observer cleanup - Improve user experience with fresh data when returning to app - Handle app backgrounding, screen lock, and navigation scenarios
1 parent f78bff0 commit 2e09db4

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

  • app/src/main/java/com/dpconde/sofiatracker/presentation/main

app/src/main/java/com/dpconde/sofiatracker/presentation/main/MainScreen.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import androidx.compose.material.icons.filled.Add
1010
import androidx.compose.material3.*
1111
import androidx.compose.runtime.*
1212
import androidx.compose.ui.Alignment
13+
import androidx.compose.ui.platform.LocalLifecycleOwner
14+
import androidx.lifecycle.Lifecycle
15+
import androidx.lifecycle.LifecycleEventObserver
1316
import androidx.compose.ui.Modifier
1417
import androidx.compose.ui.graphics.Brush
1518
import androidx.compose.ui.graphics.Color
@@ -51,6 +54,20 @@ fun MainScreen(
5154
viewModel: MainScreenViewModel = hiltViewModel()
5255
) {
5356
val uiState by viewModel.uiState.collectAsState()
57+
val lifecycleOwner = LocalLifecycleOwner.current
58+
59+
// Trigger sync when screen is resumed
60+
DisposableEffect(lifecycleOwner) {
61+
val observer = LifecycleEventObserver { _, event ->
62+
if (event == Lifecycle.Event.ON_RESUME) {
63+
viewModel.triggerSync()
64+
}
65+
}
66+
lifecycleOwner.lifecycle.addObserver(observer)
67+
onDispose {
68+
lifecycleOwner.lifecycle.removeObserver(observer)
69+
}
70+
}
5471

5572
Scaffold(
5673
topBar = {

0 commit comments

Comments
 (0)