Fix grid visibility crash - delay camera settings until initialized

MijickCamera's cameraGridView is nil in onAppear, causing a crash when
setGridVisibility() is called immediately. Added 100ms delay for grid,
HDR, and skin smoothing settings to let MijickCamera fully initialize.
This commit is contained in:
Matt Bruce 2026-01-04 15:29:27 -06:00
parent 564d2107ea
commit 52eed458f4

View File

@ -179,15 +179,19 @@ struct CustomCameraScreen: MCameraScreen {
} }
// Track initial camera position // Track initial camera position
currentCameraPosition = cameraSettings.cameraPosition currentCameraPosition = cameraSettings.cameraPosition
// Sync grid visibility with MijickCamera (defaults to true, so we need to set it) // Apply camera settings after a brief delay to let MijickCamera fully initialize
Task { @MainActor in
try? await Task.sleep(for: .milliseconds(100))
// Sync grid visibility with MijickCamera (defaults to true)
setGridVisibility(cameraSettings.isGridVisible) setGridVisibility(cameraSettings.isGridVisible)
// Apply HDR mode from settings // Apply HDR mode from settings
applyHDRMode(cameraSettings.hdrMode) applyHDRMode(cameraSettings.hdrMode)
// Apply Center Stage from settings
applyCenterStage(cameraSettings.isCenterStageEnabled)
// Apply skin smoothing filter from settings // Apply skin smoothing filter from settings
applySkinSmoothing(cameraSettings.isSkinSmoothingEnabled) applySkinSmoothing(cameraSettings.isSkinSmoothingEnabled)
} }
// Center Stage can be set immediately (system-level, not camera-view-level)
applyCenterStage(cameraSettings.isCenterStageEnabled)
}
.onChange(of: cameraSettings.cameraPositionRaw) { _, newRaw in .onChange(of: cameraSettings.cameraPositionRaw) { _, newRaw in
// Switch camera when position changes in settings // Switch camera when position changes in settings
let newPosition: CameraPosition = newRaw == "front" ? .front : .back let newPosition: CameraPosition = newRaw == "front" ? .front : .back