react-native-camera-kit/ios/ReactNativeCameraKit/CameraManager.swift
2023-06-30 00:24:37 -07:00

47 lines
1.5 KiB
Swift

//
// CameraManager.swift
// ReactNativeCameraKit
//
import AVFoundation
import Foundation
/*
* Class managing the communication between React Native and the native implementation
*/
@objc(CKCameraManager) public class CameraManager: RCTViewManager {
var camera: CameraView!
override public static func requiresMainQueueSetup() -> Bool {
return true
}
override public func view() -> UIView! {
camera = CameraView()
return camera
}
@objc func capture(_ options: NSDictionary,
resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock) {
camera.capture(options as! [String: Any],
onSuccess: { resolve($0) },
onError: { reject("capture_error", $0, nil) })
}
@objc func checkDeviceCameraAuthorizationStatus(_ resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock) {
switch AVCaptureDevice.authorizationStatus(for: .video) {
case .authorized: resolve(true)
case .notDetermined: resolve(-1)
default: resolve(false)
}
}
@objc func requestDeviceCameraAuthorization(_ resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock) {
AVCaptureDevice.requestAccess(for: .video, completionHandler: { resolve($0) })
}
}