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:
@@ -3,9 +3,14 @@ import ComposeApp
|
||||
|
||||
struct AddResidenceView: View {
|
||||
@Binding var isPresented: Bool
|
||||
var onResidenceCreated: (() -> Void)?
|
||||
|
||||
var body: some View {
|
||||
ResidenceFormView(existingResidence: nil, isPresented: $isPresented)
|
||||
ResidenceFormView(
|
||||
existingResidence: nil,
|
||||
isPresented: $isPresented,
|
||||
onSuccess: onResidenceCreated
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,12 @@ struct ResidencesListView: View {
|
||||
}
|
||||
}
|
||||
.sheet(isPresented: $showingAddResidence) {
|
||||
AddResidenceView(isPresented: $showingAddResidence)
|
||||
AddResidenceView(
|
||||
isPresented: $showingAddResidence,
|
||||
onResidenceCreated: {
|
||||
viewModel.loadMyResidences(forceRefresh: true)
|
||||
}
|
||||
)
|
||||
}
|
||||
.sheet(isPresented: $showingJoinResidence) {
|
||||
JoinResidenceView(onJoined: {
|
||||
|
||||
@@ -4,6 +4,7 @@ import ComposeApp
|
||||
struct ResidenceFormView: View {
|
||||
let existingResidence: Residence?
|
||||
@Binding var isPresented: Bool
|
||||
var onSuccess: (() -> Void)?
|
||||
@StateObject private var viewModel = ResidenceViewModel()
|
||||
@FocusState private var focusedField: Field?
|
||||
|
||||
@@ -301,6 +302,7 @@ struct ResidenceFormView: View {
|
||||
// Edit mode
|
||||
viewModel.updateResidence(id: residence.id, request: request) { success in
|
||||
if success {
|
||||
onSuccess?()
|
||||
isPresented = false
|
||||
}
|
||||
}
|
||||
@@ -308,6 +310,7 @@ struct ResidenceFormView: View {
|
||||
// Add mode
|
||||
viewModel.createResidence(request: request) { success in
|
||||
if success {
|
||||
onSuccess?()
|
||||
isPresented = false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user