From 3715a0ea3fe98fb69a403fa03e55c0be3ac293ef Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 11 Mar 2024 14:17:27 +0200 Subject: [PATCH] Fix crashes when blocking/unblocking users - SwiftUI crashes when mutating optional state properties in place - workaround it buy mutating a local reference first --- .../RoomMemberDetailsScreenViewModel.swift | 10 ++++++++-- changelog.d/pr-2553.bugfix | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 changelog.d/pr-2553.bugfix diff --git a/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift b/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift index e2776ae83..1c2ffbc6f 100644 --- a/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift @@ -108,7 +108,10 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro state.isProcessingIgnoreRequest = false switch result { case .success: - state.memberDetails?.isIgnored = true + var details = state.memberDetails + details?.isIgnored = true + state.memberDetails = details + updateMembers() case .failure: state.bindings.alertInfo = .init(id: .unknown) @@ -126,7 +129,10 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro state.isProcessingIgnoreRequest = false switch result { case .success: - state.memberDetails?.isIgnored = false + var details = state.memberDetails + details?.isIgnored = false + state.memberDetails = details + updateMembers() case .failure: state.bindings.alertInfo = .init(id: .unknown) diff --git a/changelog.d/pr-2553.bugfix b/changelog.d/pr-2553.bugfix new file mode 100644 index 000000000..929447251 --- /dev/null +++ b/changelog.d/pr-2553.bugfix @@ -0,0 +1 @@ +Fix crashes when blocking/unblocking users \ No newline at end of file