fix: Make recorder less error-prone (#189)
* Abort recording if failed to start or empty frames * Activate Audio Session on `cameraQueue` * Double-check stop recording in callback * Only call callback once * Format * Add description to `.aborted` error * Update RecordingSession.swift * Update AVAudioSession+updateCategory.swift * Rename serial dispatch queues
This commit is contained in:
@@ -12,27 +12,38 @@ import Foundation
|
||||
Represents a callback to JavaScript. Syntax is the same as with Promise.
|
||||
*/
|
||||
class Callback {
|
||||
private var hasCalled = false
|
||||
private let callback: RCTResponseSenderBlock
|
||||
|
||||
init(_ callback: @escaping RCTResponseSenderBlock) {
|
||||
self.callback = callback
|
||||
}
|
||||
|
||||
func reject(error: CameraError, cause: NSError?) {
|
||||
guard !hasCalled else { return }
|
||||
|
||||
callback([NSNull(), makeReactError(error, cause: cause)])
|
||||
hasCalled = true
|
||||
}
|
||||
|
||||
func reject(error: CameraError) {
|
||||
guard !hasCalled else { return }
|
||||
|
||||
reject(error: error, cause: nil)
|
||||
hasCalled = true
|
||||
}
|
||||
|
||||
func resolve(_ value: Any?) {
|
||||
func resolve(_ value: Any) {
|
||||
guard !hasCalled else { return }
|
||||
|
||||
callback([value, NSNull()])
|
||||
hasCalled = true
|
||||
}
|
||||
|
||||
func resolve() {
|
||||
resolve(nil)
|
||||
guard !hasCalled else { return }
|
||||
|
||||
resolve(NSNull())
|
||||
hasCalled = true
|
||||
}
|
||||
|
||||
// MARK: Private
|
||||
|
||||
private let callback: RCTResponseSenderBlock
|
||||
}
|
||||
|
Reference in New Issue
Block a user