Apply patch

This commit is contained in:
Ali 2020-06-19 17:39:19 +04:00
parent 923ba33306
commit 66fa48e404
6 changed files with 26 additions and 32 deletions

View File

@ -21,7 +21,7 @@
@property (nonatomic, copy) void (^micLevel)(CGFloat level); @property (nonatomic, copy) void (^micLevel)(CGFloat level);
@property (nonatomic, copy) void (^onDuration)(NSTimeInterval duration); @property (nonatomic, copy) void (^onDuration)(NSTimeInterval duration);
@property (nonatomic, copy) void(^finishedWithVideo)(NSURL *videoURL, UIImage *previewImage, NSUInteger fileSize, NSTimeInterval duration, CGSize dimensions, id liveUploadData, TGVideoEditAdjustments *adjustments, bool, int32_t); @property (nonatomic, copy) void(^finishedWithVideo)(NSURL *videoURL, UIImage *previewImage, NSUInteger fileSize, NSTimeInterval duration, CGSize dimensions, id liveUploadData, TGVideoEditAdjustments *adjustments, bool, int32_t);
@property (nonatomic, copy) void(^onDismiss)(bool isAuto); @property (nonatomic, copy) void(^onDismiss)(bool isAuto, bool isCancelled);
@property (nonatomic, copy) void(^onStop)(void); @property (nonatomic, copy) void(^onStop)(void);
@property (nonatomic, copy) void(^onCancel)(void); @property (nonatomic, copy) void(^onCancel)(void);
@property (nonatomic, copy) void(^didDismiss)(void); @property (nonatomic, copy) void(^didDismiss)(void);

View File

@ -457,6 +457,8 @@ static const CGFloat outerCircleMinScale = innerCircleRadius / outerCircleRadius
_lockPanelWrapperView.transform = CGAffineTransformMakeTranslation(0.0f, 100.0f); _lockPanelWrapperView.transform = CGAffineTransformMakeTranslation(0.0f, 100.0f);
_lockPanelWrapperView.alpha = 0.0f; _lockPanelWrapperView.alpha = 0.0f;
_lock.transform = CGAffineTransformIdentity;
if (iosMajorVersion() >= 8) { if (iosMajorVersion() >= 8) {
[UIView animateWithDuration:0.50 delay:0.0 usingSpringWithDamping:0.55f initialSpringVelocity:0.0f options:UIViewAnimationOptionBeginFromCurrentState animations:^{ [UIView animateWithDuration:0.50 delay:0.0 usingSpringWithDamping:0.55f initialSpringVelocity:0.0f options:UIViewAnimationOptionBeginFromCurrentState animations:^{
_innerCircleView.transform = CGAffineTransformIdentity; _innerCircleView.transform = CGAffineTransformIdentity;
@ -548,6 +550,10 @@ static const CGFloat outerCircleMinScale = innerCircleRadius / outerCircleRadius
} }
- (void)animateLock { - (void)animateLock {
if (!_animatedIn) {
return;
}
_lockView.lockness = 1.0f; _lockView.lockness = 1.0f;
[_lock updateLockness:1.0]; [_lock updateLockness:1.0];
@ -718,10 +724,6 @@ static const CGFloat outerCircleMinScale = innerCircleRadius / outerCircleRadius
return false; return false;
} else if (distanceX < -100.0 && !_xFeedbackOccured) { } else if (distanceX < -100.0 && !_xFeedbackOccured) {
if (iosMajorVersion() >= 10) {
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium];
[generator impactOccurred];
}
_xFeedbackOccured = true; _xFeedbackOccured = true;
} else if (distanceX > -100.0) { } else if (distanceX > -100.0) {
_xFeedbackOccured = false; _xFeedbackOccured = false;
@ -732,10 +734,6 @@ static const CGFloat outerCircleMinScale = innerCircleRadius / outerCircleRadius
return false; return false;
} else if (distanceY < -60.0 && !_yFeedbackOccured) { } else if (distanceY < -60.0 && !_yFeedbackOccured) {
if (iosMajorVersion() >= 10) {
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium];
[generator impactOccurred];
}
_yFeedbackOccured = true; _yFeedbackOccured = true;
} else if (distanceY > -60.0) { } else if (distanceY > -60.0) {
_yFeedbackOccured = false; _yFeedbackOccured = false;

View File

@ -628,7 +628,7 @@ typedef enum
_dismissed = cancelled; _dismissed = cancelled;
if (self.onDismiss != nil) if (self.onDismiss != nil)
self.onDismiss(_automaticDismiss); self.onDismiss(_automaticDismiss, cancelled);
if (_player != nil) if (_player != nil)
[_player pause]; [_player pause];

View File

@ -2550,7 +2550,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
$0.updatedInputTextPanelState { panelState in $0.updatedInputTextPanelState { panelState in
if let videoRecorder = videoRecorder { if let videoRecorder = videoRecorder {
if panelState.mediaRecordingState == nil { if panelState.mediaRecordingState == nil {
return panelState.withUpdatedMediaRecordingState(.video(status: .recording(videoRecorder.audioStatus), isLocked: false)) return panelState.withUpdatedMediaRecordingState(.video(status: .recording(videoRecorder.audioStatus), isLocked: strongSelf.lockMediaRecordingRequestId == strongSelf.beginMediaRecordingRequestId))
} }
} else { } else {
return panelState.withUpdatedMediaRecordingState(nil) return panelState.withUpdatedMediaRecordingState(nil)
@ -2562,12 +2562,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
if let videoRecorder = videoRecorder { if let videoRecorder = videoRecorder {
strongSelf.recorderFeedback?.impact(.light) strongSelf.recorderFeedback?.impact(.light)
videoRecorder.onDismiss = { videoRecorder.onDismiss = { [weak self] isCancelled in
if let strongSelf = self { self?.chatDisplayNode.updateRecordedMediaDeleted(isCancelled)
strongSelf.beginMediaRecordingRequestId += 1 self?.beginMediaRecordingRequestId += 1
strongSelf.lockMediaRecordingRequestId = nil self?.lockMediaRecordingRequestId = nil
strongSelf.videoRecorder.set(.single(nil)) self?.videoRecorder.set(.single(nil))
}
} }
videoRecorder.onStop = { videoRecorder.onStop = {
if let strongSelf = self { if let strongSelf = self {

View File

@ -1011,9 +1011,9 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
if !deltaOffset.isZero { if !deltaOffset.isZero {
audioRecordingCancelIndicator.layer.animatePosition(from: CGPoint(x: deltaOffset, y: 0.0), to: CGPoint(), duration: 0.3, additive: true) audioRecordingCancelIndicator.layer.animatePosition(from: CGPoint(x: deltaOffset, y: 0.0), to: CGPoint(), duration: 0.3, additive: true)
} }
} else if audioRecordingCancelIndicator.layer.animation(forKey: "slide_juggle") == nil { } else if audioRecordingCancelIndicator.layer.animation(forKey: "slide_juggle") == nil, baseWidth > 320 {
let slideJuggleAnimation = CABasicAnimation(keyPath: "transform") let slideJuggleAnimation = CABasicAnimation(keyPath: "transform")
slideJuggleAnimation.toValue = CATransform3DMakeTranslation(-6, 0, 0) slideJuggleAnimation.toValue = CATransform3DMakeTranslation(6, 0, 0)
slideJuggleAnimation.duration = 1 slideJuggleAnimation.duration = 1
slideJuggleAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) slideJuggleAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
slideJuggleAnimation.autoreverses = true slideJuggleAnimation.autoreverses = true
@ -1023,11 +1023,9 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
let audioRecordingTimeSize = audioRecordingTimeNode.measure(CGSize(width: 200.0, height: 100.0)) let audioRecordingTimeSize = audioRecordingTimeNode.measure(CGSize(width: 200.0, height: 100.0))
let cancelMinX = audioRecordingCancelIndicator.alpha > 0.5 ? audioRecordingCancelIndicator.frame.minX : width
audioRecordingInfoContainerNode.frame = CGRect( audioRecordingInfoContainerNode.frame = CGRect(
origin: CGPoint( origin: CGPoint(
x: min(leftInset, cancelMinX - audioRecordingTimeSize.width - 8.0 - 28.0), x: min(leftInset, width - audioRecordingTimeSize.width - 8.0 - 28.0),
y: 0.0 y: 0.0
), ),
size: CGSize(width: baseWidth, height: panelHeight) size: CGSize(width: baseWidth, height: panelHeight)
@ -1051,7 +1049,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
self.addSubnode(audioRecordingDotNode) self.addSubnode(audioRecordingDotNode)
} }
animateDotAppearing = transition.isAnimated && !isLocked && !hideInfo animateDotAppearing = transition.isAnimated && !hideInfo
audioRecordingDotNode.frame = CGRect(origin: CGPoint(x: leftInset + 2.0 - UIScreenPixel, y: panelHeight - 44 + 1), size: CGSize(width: 40.0, height: 40)) audioRecordingDotNode.frame = CGRect(origin: CGPoint(x: leftInset + 2.0 - UIScreenPixel, y: panelHeight - 44 + 1), size: CGSize(width: 40.0, height: 40))
if animateDotAppearing { if animateDotAppearing {
@ -1074,9 +1072,10 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
} }
if hideInfo { if hideInfo {
audioRecordingDotNode.layer.animateAlpha(from: audioRecordingDotNode.alpha, to: 0, duration: 0.15, delay: 0, removeOnCompletion: false) audioRecordingDotNode.layer.removeAllAnimations()
audioRecordingTimeNode.layer.animateAlpha(from: audioRecordingTimeNode.alpha, to: 0, duration: 0.15, delay: 0, removeOnCompletion: false) audioRecordingDotNode.layer.animateAlpha(from: CGFloat(audioRecordingDotNode.layer.presentation()?.opacity ?? 1), to: 0, duration: 0.15, delay: 0, removeOnCompletion: false)
audioRecordingCancelIndicator.layer.animateAlpha(from: audioRecordingCancelIndicator.alpha, to: 0, duration: 0.15, delay: 0, removeOnCompletion: false) audioRecordingTimeNode.layer.animateAlpha(from: CGFloat(audioRecordingTimeNode.layer.presentation()?.opacity ?? 1), to: 0, duration: 0.15, delay: 0, removeOnCompletion: false)
audioRecordingCancelIndicator.layer.animateAlpha(from: CGFloat(audioRecordingCancelIndicator.layer.presentation()?.opacity ?? 1), to: 0, duration: 0.15, delay: 0, removeOnCompletion: false)
} }
} else { } else {
self.actionButtons.micButton.audioRecorder = nil self.actionButtons.micButton.audioRecorder = nil
@ -1091,8 +1090,6 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
if let audioRecordingInfoContainerNode = self.audioRecordingInfoContainerNode { if let audioRecordingInfoContainerNode = self.audioRecordingInfoContainerNode {
self.audioRecordingInfoContainerNode = nil self.audioRecordingInfoContainerNode = nil
//transition.updateTransformScale(node: audioRecordingInfoContainerNode, scale: 0)
//transition.updatePosition(node: audioRecordingInfoContainerNode, position: CGPoint(x: audioRecordingInfoContainerNode.position.x - 10, y: audioRecordingInfoContainerNode.position.y))
transition.updateAlpha(node: audioRecordingInfoContainerNode, alpha: 0) { [weak audioRecordingInfoContainerNode] _ in transition.updateAlpha(node: audioRecordingInfoContainerNode, alpha: 0) { [weak audioRecordingInfoContainerNode] _ in
audioRecordingInfoContainerNode?.removeFromSupernode() audioRecordingInfoContainerNode?.removeFromSupernode()
} }
@ -1104,7 +1101,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
self?.audioRecordingDotNode = nil self?.audioRecordingDotNode = nil
audioRecordingDotNode.layer.animateScale(from: 1.0, to: 0.3, duration: 0.15, delay: 0, removeOnCompletion: false) audioRecordingDotNode.layer.animateScale(from: CGFloat(audioRecordingDotNode.layer.presentation()?.opacity ?? 1), to: 0.3, duration: 0.15, delay: 0, removeOnCompletion: false)
audioRecordingDotNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, delay: 0, removeOnCompletion: false) { [weak audioRecordingDotNode] _ in audioRecordingDotNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, delay: 0, removeOnCompletion: false) { [weak audioRecordingDotNode] _ in
audioRecordingDotNode?.removeFromSupernode() audioRecordingDotNode?.removeFromSupernode()
} }

View File

@ -29,7 +29,7 @@ final class InstantVideoControllerRecordingStatus {
final class InstantVideoController: LegacyController, StandalonePresentableController { final class InstantVideoController: LegacyController, StandalonePresentableController {
private var captureController: TGVideoMessageCaptureController? private var captureController: TGVideoMessageCaptureController?
var onDismiss: (() -> Void)? var onDismiss: ((Bool) -> Void)?
var onStop: (() -> Void)? var onStop: (() -> Void)?
private let micLevelValue = ValuePromise<Float>(0.0) private let micLevelValue = ValuePromise<Float>(0.0)
@ -59,8 +59,8 @@ final class InstantVideoController: LegacyController, StandalonePresentableContr
captureController.onDuration = { [weak self] duration in captureController.onDuration = { [weak self] duration in
self?.durationValue.set(duration) self?.durationValue.set(duration)
} }
captureController.onDismiss = { [weak self] _ in captureController.onDismiss = { [weak self] _, isCancelled in
self?.onDismiss?() self?.onDismiss?(isCancelled)
} }
captureController.onStop = { [weak self] in captureController.onStop = { [weak self] in
self?.onStop?() self?.onStop?()