fix(macos): Propagate ChatViewModel environment object to sheet presentations

Fixes crash on macOS when presenting sheets due to missing @EnvironmentObject.
Added .environmentObject(viewModel) to 8 sheet/fullScreenCover presentations.

Fixed presentations:
- AppInfoView sheet
- FingerprintView sheet
- ImagePickerView fullScreenCover (iOS, both contexts)
- MacImagePickerView sheet (macOS, both contexts)
- ImagePreviewView sheet
- LocationChannelsSheet sheet

Tested on macOS 26.1 (Apple Silicon M4).
All sheet presentations now open without crash.

Platform: macOS only
Impact: Resolves EnvironmentObject.error() crashes
This commit is contained in:
Anthony Biasi
2025-11-26 08:25:23 -07:00
parent 9e57bce5c3
commit 56b9457fcf
+8
View File
@@ -189,6 +189,7 @@ struct ContentView: View {
}
.sheet(isPresented: $showAppInfo) {
AppInfoView()
.environmentObject(viewModel)
.onAppear { viewModel.isAppInfoPresented = true }
.onDisappear { viewModel.isAppInfoPresented = false }
}
@@ -198,6 +199,7 @@ struct ContentView: View {
)) {
if let peerID = viewModel.showingFingerprintFor {
FingerprintView(viewModel: viewModel, peerID: peerID)
.environmentObject(viewModel)
}
}
#if os(iOS)
@@ -225,6 +227,7 @@ struct ContentView: View {
}
}
}
.environmentObject(viewModel)
.ignoresSafeArea()
}
#endif
@@ -253,6 +256,7 @@ struct ContentView: View {
}
}
}
.environmentObject(viewModel)
}
#endif
.sheet(isPresented: Binding(
@@ -261,6 +265,7 @@ struct ContentView: View {
)) {
if let url = imagePreviewURL {
ImagePreviewView(url: url)
.environmentObject(viewModel)
}
}
.alert("Recording Error", isPresented: $showRecordingAlert, actions: {
@@ -825,6 +830,7 @@ struct ContentView: View {
}
}
}
.environmentObject(viewModel)
.ignoresSafeArea()
}
#endif
@@ -845,6 +851,7 @@ struct ContentView: View {
}
}
}
.environmentObject(viewModel)
}
#endif
}
@@ -1382,6 +1389,7 @@ struct ContentView: View {
.padding(.horizontal, 12)
.sheet(isPresented: $showLocationChannelsSheet) {
LocationChannelsSheet(isPresented: $showLocationChannelsSheet)
.environmentObject(viewModel)
.onAppear { viewModel.isLocationChannelsSheetPresented = true }
.onDisappear { viewModel.isLocationChannelsSheetPresented = false }
}