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) { .sheet(isPresented: $showAppInfo) {
AppInfoView() AppInfoView()
.environmentObject(viewModel)
.onAppear { viewModel.isAppInfoPresented = true } .onAppear { viewModel.isAppInfoPresented = true }
.onDisappear { viewModel.isAppInfoPresented = false } .onDisappear { viewModel.isAppInfoPresented = false }
} }
@@ -198,6 +199,7 @@ struct ContentView: View {
)) { )) {
if let peerID = viewModel.showingFingerprintFor { if let peerID = viewModel.showingFingerprintFor {
FingerprintView(viewModel: viewModel, peerID: peerID) FingerprintView(viewModel: viewModel, peerID: peerID)
.environmentObject(viewModel)
} }
} }
#if os(iOS) #if os(iOS)
@@ -225,6 +227,7 @@ struct ContentView: View {
} }
} }
} }
.environmentObject(viewModel)
.ignoresSafeArea() .ignoresSafeArea()
} }
#endif #endif
@@ -253,6 +256,7 @@ struct ContentView: View {
} }
} }
} }
.environmentObject(viewModel)
} }
#endif #endif
.sheet(isPresented: Binding( .sheet(isPresented: Binding(
@@ -261,6 +265,7 @@ struct ContentView: View {
)) { )) {
if let url = imagePreviewURL { if let url = imagePreviewURL {
ImagePreviewView(url: url) ImagePreviewView(url: url)
.environmentObject(viewModel)
} }
} }
.alert("Recording Error", isPresented: $showRecordingAlert, actions: { .alert("Recording Error", isPresented: $showRecordingAlert, actions: {
@@ -825,6 +830,7 @@ struct ContentView: View {
} }
} }
} }
.environmentObject(viewModel)
.ignoresSafeArea() .ignoresSafeArea()
} }
#endif #endif
@@ -845,6 +851,7 @@ struct ContentView: View {
} }
} }
} }
.environmentObject(viewModel)
} }
#endif #endif
} }
@@ -1382,6 +1389,7 @@ struct ContentView: View {
.padding(.horizontal, 12) .padding(.horizontal, 12)
.sheet(isPresented: $showLocationChannelsSheet) { .sheet(isPresented: $showLocationChannelsSheet) {
LocationChannelsSheet(isPresented: $showLocationChannelsSheet) LocationChannelsSheet(isPresented: $showLocationChannelsSheet)
.environmentObject(viewModel)
.onAppear { viewModel.isLocationChannelsSheetPresented = true } .onAppear { viewModel.isLocationChannelsSheetPresented = true }
.onDisappear { viewModel.isLocationChannelsSheetPresented = false } .onDisappear { viewModel.isLocationChannelsSheetPresented = false }
} }