Fix residence list not refreshing after add/edit on iOS and Android
Fixed issue where adding or editing a residence didn't update the residence list, requiring manual refresh to see changes. iOS Changes: - ResidencesListView: Added onResidenceCreated callback to AddResidenceView sheet that triggers loadMyResidences(forceRefresh: true) - AddResidenceView: Added onResidenceCreated callback parameter - ResidenceFormView: Added onSuccess callback that fires before dismissing in both create and update modes Android Changes: - ResidencesScreen: Added shouldRefresh parameter with LaunchedEffect that watches for changes and reloads residences when flag is true - App.kt (ResidencesRoute): Read "refresh" flag from saved state handle - App.kt (AddResidenceRoute): Set "refresh" flag in previous back stack entry before navigating back on residence created - App.kt (EditResidenceRoute): Set "refresh" flag before navigating back on residence updated Both platforms now properly refresh the residence list when: - A new residence is added - An existing residence is edited - User joins a residence with code (already working) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -353,7 +353,10 @@ fun App(
|
||||
)
|
||||
}
|
||||
|
||||
composable<ResidencesRoute> {
|
||||
composable<ResidencesRoute> { backStackEntry ->
|
||||
// Get refresh flag from saved state (set when returning from add/edit)
|
||||
val shouldRefresh = backStackEntry.savedStateHandle.get<Boolean>("refresh") ?: false
|
||||
|
||||
ResidencesScreen(
|
||||
onResidenceClick = { residenceId ->
|
||||
navController.navigate(ResidenceDetailRoute(residenceId))
|
||||
@@ -364,6 +367,7 @@ fun App(
|
||||
onNavigateToProfile = {
|
||||
navController.navigate(ProfileRoute)
|
||||
},
|
||||
shouldRefresh = shouldRefresh,
|
||||
onLogout = {
|
||||
// Clear token and lookups on logout
|
||||
TokenStorage.clearToken()
|
||||
@@ -383,6 +387,8 @@ fun App(
|
||||
navController.popBackStack()
|
||||
},
|
||||
onResidenceCreated = {
|
||||
// Set refresh flag before navigating back
|
||||
navController.previousBackStackEntry?.savedStateHandle?.set("refresh", true)
|
||||
navController.popBackStack()
|
||||
}
|
||||
)
|
||||
@@ -419,6 +425,8 @@ fun App(
|
||||
navController.popBackStack()
|
||||
},
|
||||
onResidenceUpdated = {
|
||||
// Set refresh flag before navigating back
|
||||
navController.previousBackStackEntry?.savedStateHandle?.set("refresh", true)
|
||||
navController.popBackStack()
|
||||
}
|
||||
)
|
||||
|
||||
@@ -34,6 +34,7 @@ fun ResidencesScreen(
|
||||
onAddResidence: () -> Unit,
|
||||
onLogout: () -> Unit,
|
||||
onNavigateToProfile: () -> Unit = {},
|
||||
shouldRefresh: Boolean = false,
|
||||
viewModel: ResidenceViewModel = viewModel { ResidenceViewModel() }
|
||||
) {
|
||||
val myResidencesState by viewModel.myResidencesState.collectAsState()
|
||||
@@ -44,6 +45,13 @@ fun ResidencesScreen(
|
||||
viewModel.loadMyResidences()
|
||||
}
|
||||
|
||||
// Refresh when shouldRefresh flag changes
|
||||
LaunchedEffect(shouldRefresh) {
|
||||
if (shouldRefresh) {
|
||||
viewModel.loadMyResidences(forceRefresh = true)
|
||||
}
|
||||
}
|
||||
|
||||
// Handle refresh state
|
||||
LaunchedEffect(myResidencesState) {
|
||||
if (myResidencesState !is ApiResult.Loading) {
|
||||
|
||||
Reference in New Issue
Block a user