Camera fixes

This commit is contained in:
Ilya Laktyushin 2023-06-26 01:41:55 +02:00
parent b35294443c
commit 683e0d7603

View File

@ -84,7 +84,15 @@ private let dualButtonTag = GenericComponentViewTag()
private final class CameraScreenComponent: CombinedComponent { private final class CameraScreenComponent: CombinedComponent {
typealias EnvironmentType = ViewControllerComponentContainer.Environment typealias EnvironmentType = ViewControllerComponentContainer.Environment
final class ExternalState {
fileprivate(set) var isRecording: Bool = false
public init() {
}
}
let context: AccountContext let context: AccountContext
let externalState: ExternalState
let camera: Camera let camera: Camera
let updateState: ActionSlot<CameraState> let updateState: ActionSlot<CameraState>
let hasAppeared: Bool let hasAppeared: Bool
@ -98,6 +106,7 @@ private final class CameraScreenComponent: CombinedComponent {
init( init(
context: AccountContext, context: AccountContext,
externalState: ExternalState,
camera: Camera, camera: Camera,
updateState: ActionSlot<CameraState>, updateState: ActionSlot<CameraState>,
hasAppeared: Bool, hasAppeared: Bool,
@ -110,6 +119,7 @@ private final class CameraScreenComponent: CombinedComponent {
completion: ActionSlot<Signal<CameraScreen.Result, NoError>> completion: ActionSlot<Signal<CameraScreen.Result, NoError>>
) { ) {
self.context = context self.context = context
self.externalState = externalState
self.camera = camera self.camera = camera
self.updateState = updateState self.updateState = updateState
self.hasAppeared = hasAppeared self.hasAppeared = hasAppeared
@ -447,6 +457,8 @@ private final class CameraScreenComponent: CombinedComponent {
state.volumeButtonsListenerActive = component.hasAppeared && component.isVisible state.volumeButtonsListenerActive = component.hasAppeared && component.isVisible
component.externalState.isRecording = state.cameraState.recording != .none
let isTablet: Bool let isTablet: Bool
if case .regular = environment.metrics.widthClass { if case .regular = environment.metrics.widthClass {
isTablet = true isTablet = true
@ -951,6 +963,7 @@ public class CameraScreen: ViewController {
fileprivate let backgroundView: UIView fileprivate let backgroundView: UIView
fileprivate let containerView: UIView fileprivate let containerView: UIView
private let componentExternalState = CameraScreenComponent.ExternalState()
fileprivate let componentHost: ComponentView<ViewControllerComponentContainer.Environment> fileprivate let componentHost: ComponentView<ViewControllerComponentContainer.Environment>
private let previewContainerView: UIView private let previewContainerView: UIView
@ -1248,7 +1261,7 @@ public class CameraScreen: ViewController {
case .began: case .began:
break break
case .changed: case .changed:
if !"".isEmpty { if self.componentExternalState.isRecording {
} else { } else {
if translation.x < -10.0 || self.isDismissing { if translation.x < -10.0 || self.isDismissing {
@ -1628,6 +1641,7 @@ public class CameraScreen: ViewController {
component: AnyComponent( component: AnyComponent(
CameraScreenComponent( CameraScreenComponent(
context: self.context, context: self.context,
externalState: self.componentExternalState,
camera: self.camera, camera: self.camera,
updateState: self.updateState, updateState: self.updateState,
hasAppeared: self.hasAppeared, hasAppeared: self.hasAppeared,