feat: Separate usecases (decouple microphone, video, photo) (#168)

* Add props

* add props (iOS)

* Add use-cases conditionally

* Update CameraView+RecordVideo.swift

* Update RecordingSession.swift

* reconfigure on change

* Throw correct errors

* Check for audio permission

* Move `#if` outward

* Throw appropriate errors

* Update CameraView+RecordVideo.swift

* fix Splashscreen

* Dynamic filePath

* Fix video extension

* add `avci` and `m4v` file types

* Fix RecordVideo errors

* Fix audio setup

* Enable `photo`, `video` and `audio`

* Check for `video={true}` in frameProcessor

* format

* Remove unused DispatchQueue

* Update docs

* Add `supportsPhotoAndVideoCapture`

* Fix view manager

* Fix error not being propagated

* Catch normal errors too

* Update DEVICES.mdx

* Update CAPTURING.mdx

* Update classdocs
This commit is contained in:
Marc Rousavy
2021-06-07 13:08:40 +02:00
committed by GitHub
parent 555474be7d
commit 72a1fad78e
30 changed files with 412 additions and 167 deletions

View File

@@ -21,7 +21,7 @@ enum PermissionError: String {
var message: String {
switch self {
case .microphone:
return "The Microphone permission was denied!"
return "The Microphone permission was denied! If you want to record Videos without sound, pass `audio={false}`."
case .camera:
return "The Camera permission was denied!"
}
@@ -186,6 +186,8 @@ enum CaptureError {
case createTempFileError
case createRecorderError(message: String? = nil)
case invalidPhotoCodec
case videoNotEnabled
case photoNotEnabled
case unknown(message: String? = nil)
var code: String {
@@ -204,6 +206,10 @@ enum CaptureError {
return "create-recorder-error"
case .invalidPhotoCodec:
return "invalid-photo-codec"
case .videoNotEnabled:
return "video-not-enabled"
case .photoNotEnabled:
return "photo-not-enabled"
case .unknown:
return "unknown"
}
@@ -225,6 +231,10 @@ enum CaptureError {
return "Failed to create a temporary file!"
case let .createRecorderError(message: message):
return "Failed to create the AVAssetWriter (Recorder)! \(message ?? "(no additional message)")"
case .videoNotEnabled:
return "Video capture is disabled! Pass `video={true}` to enable video recordings."
case .photoNotEnabled:
return "Photo capture is disabled! Pass `photo={true}` to enable photo capture."
case let .unknown(message: message):
return message ?? "An unknown error occured while capturing a video/photo."
}