From 5d9d153e541457a456f1a224e0e3db1aee0c9e6e Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Thu, 19 Oct 2023 17:43:20 +0200 Subject: [PATCH] fix: Fix Xcode 15 build error (`var` instead of `let`) (#2048) * fix: Fix Xcode 15 build error (`var` instead of `let`) * chore: Restructure code a bit for that logic * Update CameraDevicesManager.swift --- package/ios/CameraDevicesManager.swift | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/package/ios/CameraDevicesManager.swift b/package/ios/CameraDevicesManager.swift index 3547ebc..ebac70f 100644 --- a/package/ios/CameraDevicesManager.swift +++ b/package/ios/CameraDevicesManager.swift @@ -38,19 +38,11 @@ class CameraDevicesManager: RCTEventEmitter { override func constantsToExport() -> [AnyHashable: Any]! { let devices = getDevicesJson() - let preferredDevice = devices.first - - #if swift(>=5.9) - if #available(iOS 17.0, *) { - if let userPreferred = AVCaptureDevice.userPreferredCamera { - preferredDevice = userPreferred.toDictionary() - } - } - #endif + let preferredDevice = getPreferredDevice() return [ "availableCameraDevices": devices, - "userPreferredCameraDevice": preferredDevice as Any, + "userPreferredCameraDevice": preferredDevice?.toDictionary() as Any, ] } @@ -60,6 +52,19 @@ class CameraDevicesManager: RCTEventEmitter { } } + private func getPreferredDevice() -> AVCaptureDevice? { + #if swift(>=5.9) + if #available(iOS 17.0, *) { + if let userPreferred = AVCaptureDevice.userPreferredCamera { + // Return the device that was explicitly marked as a preferred camera by the user + return userPreferred + } + } + #endif + // Just return the first device + return discoverySession.devices.first + } + private static func getAllDeviceTypes() -> [AVCaptureDevice.DeviceType] { var deviceTypes: [AVCaptureDevice.DeviceType] = [] deviceTypes.append(.builtInDualCamera)