Various fixes

This commit is contained in:
Ilya Laktyushin 2024-01-18 15:13:38 +04:00
parent ca80657e16
commit 64d5a443d7

View File

@ -672,15 +672,9 @@ public class VideoMessageCameraScreen: ViewController {
} }
self.loadingView.alpha = 0.0 self.loadingView.alpha = 0.0
self.additionalPreviewView.removePlaceholder(delay: 0.0) self.additionalPreviewView.removePlaceholder(delay: 0.0)
Queue.mainQueue().after(0.15) {
self.startRecording.invoke(Void())
}
}) })
self.idleTimerExtensionDisposable.set(self.context.sharedContext.applicationBindings.pushIdleTimerExtension()) self.idleTimerExtensionDisposable.set(self.context.sharedContext.applicationBindings.pushIdleTimerExtension())
self.setupCamera()
} }
deinit { deinit {
@ -689,28 +683,19 @@ public class VideoMessageCameraScreen: ViewController {
} }
func withReadyCamera(isFirstTime: Bool = false, _ f: @escaping () -> Void) { func withReadyCamera(isFirstTime: Bool = false, _ f: @escaping () -> Void) {
guard let controller = self.controller else { let previewReady: Signal<Bool, NoError>
return
}
if #available(iOS 13.0, *) { if #available(iOS 13.0, *) {
let _ = (combineLatest(queue: Queue.mainQueue(), previewReady = self.cameraState.isDualCameraEnabled ? self.additionalPreviewView.isPreviewing : self.mainPreviewView.isPreviewing
self.cameraState.isDualCameraEnabled ? self.additionalPreviewView.isPreviewing : self.mainPreviewView.isPreviewing,
controller.audioSessionReady.get()
)
|> filter { $0 && $1 }
|> take(1)).startStandalone(next: { _, _ in
f()
})
} else { } else {
let _ = (combineLatest(queue: Queue.mainQueue(), previewReady = .single(true) |> delay(0.35, queue: Queue.mainQueue())
.single(true) |> delay(0.35, queue: Queue.mainQueue()),
controller.audioSessionReady.get()
)
|> filter { $0 && $1 }
|> take(1)).startStandalone(next: { _, _ in
f()
})
} }
let _ = (previewReady
|> filter { $0 }
|> take(1)
|> deliverOnMainQueue).startStandalone(next: { _ in
f()
})
} }
func setupLiveUpload(filePath: String) { func setupLiveUpload(filePath: String) {
@ -734,7 +719,7 @@ public class VideoMessageCameraScreen: ViewController {
self.view.addGestureRecognizer(pinchGestureRecognizer) self.view.addGestureRecognizer(pinchGestureRecognizer)
} }
private func setupCamera() { fileprivate func setupCamera() {
guard self.camera == nil else { guard self.camera == nil else {
return return
} }
@ -771,6 +756,10 @@ public class VideoMessageCameraScreen: ViewController {
camera.startCapture() camera.startCapture()
self.camera = camera self.camera = camera
Queue.mainQueue().justDispatch {
self.startRecording.invoke(Void())
}
} }
@objc private func handlePinch(_ gestureRecognizer: UIPinchGestureRecognizer) { @objc private func handlePinch(_ gestureRecognizer: UIPinchGestureRecognizer) {
@ -1252,7 +1241,6 @@ public class VideoMessageCameraScreen: ViewController {
fileprivate let completion: (EnqueueMessage?, Bool?, Int32?) -> Void fileprivate let completion: (EnqueueMessage?, Bool?, Int32?) -> Void
private var audioSessionDisposable: Disposable? private var audioSessionDisposable: Disposable?
fileprivate let audioSessionReady = ValuePromise<Bool>(false)
private let hapticFeedback = HapticFeedback() private let hapticFeedback = HapticFeedback()
@ -1633,7 +1621,7 @@ public class VideoMessageCameraScreen: ViewController {
try? AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true) try? AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true)
} }
if let self { if let self {
self.audioSessionReady.set(true) self.node.setupCamera()
} }
}, deactivate: { _ in }, deactivate: { _ in
return .single(Void()) return .single(Void())