mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various fixes
This commit is contained in:
parent
2a56be9fe0
commit
74de28b154
@ -1080,7 +1080,17 @@ public class CameraScreen: ViewController {
|
||||
fileprivate var previewBlurPromise = ValuePromise<Bool>(false)
|
||||
private let animateFlipAction = ActionSlot<Void>()
|
||||
|
||||
fileprivate var cameraIsActive = true
|
||||
private let idleTimerExtensionDisposable = MetaDisposable()
|
||||
|
||||
fileprivate var cameraIsActive = true {
|
||||
didSet {
|
||||
if self.cameraIsActive {
|
||||
self.idleTimerExtensionDisposable.set(self.context.sharedContext.applicationBindings.pushIdleTimerExtension())
|
||||
} else {
|
||||
self.idleTimerExtensionDisposable.set(nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
fileprivate var hasGallery = false
|
||||
|
||||
private var presentationData: PresentationData
|
||||
@ -1302,10 +1312,13 @@ public class CameraScreen: ViewController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.idleTimerExtensionDisposable.set(self.context.sharedContext.applicationBindings.pushIdleTimerExtension())
|
||||
}
|
||||
|
||||
deinit {
|
||||
self.changingPositionDisposable?.dispose()
|
||||
self.idleTimerExtensionDisposable.dispose()
|
||||
}
|
||||
|
||||
private var pipPanGestureRecognizer: UIPanGestureRecognizer?
|
||||
@ -2224,6 +2237,8 @@ public class CameraScreen: ViewController {
|
||||
}
|
||||
}
|
||||
self.push(controller)
|
||||
|
||||
self.requestLayout(transition: .immediate)
|
||||
}
|
||||
|
||||
public func presentDraftTooltip() {
|
||||
|
@ -1102,12 +1102,23 @@ final class CaptureControlsComponent: Component {
|
||||
lockMaskFrame = lockMaskFrame.offsetBy(dx: 8.0, dy: 0.0)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let _ = self.lockView.update(
|
||||
transition: transition,
|
||||
transition: .immediate,
|
||||
component: AnyComponent(
|
||||
LockContentComponent(
|
||||
maskFrame: lockMaskFrame
|
||||
CameraButton(
|
||||
content: AnyComponentWithIdentity(
|
||||
id: "lock",
|
||||
component: AnyComponent(
|
||||
LockContentComponent(
|
||||
maskFrame: lockMaskFrame
|
||||
)
|
||||
)
|
||||
),
|
||||
minSize: hintIconSize,
|
||||
action: {
|
||||
component.flipTapped()
|
||||
}
|
||||
)
|
||||
),
|
||||
environment: {},
|
||||
@ -1123,7 +1134,7 @@ final class CaptureControlsComponent: Component {
|
||||
transition.setScale(view: lockView, scale: isHolding ? 1.0 : 0.1)
|
||||
transition.setAlpha(view: lockView, alpha: isHolding ? 1.0 : 0.0)
|
||||
|
||||
if let lockMaskView = lockView as? LockContentComponent.View {
|
||||
if let buttonView = lockView as? CameraButton.View, let lockMaskView = buttonView.contentView.componentView as? LockContentComponent.View {
|
||||
transition.setAlpha(view: lockMaskView.maskContainerView, alpha: isHolding ? 1.0 : 0.0)
|
||||
transition.setSublayerTransform(layer: lockMaskView.maskContainerView.layer, transform: isHolding ? CATransform3DIdentity : CATransform3DMakeScale(0.1, 0.1, 1.0))
|
||||
}
|
||||
@ -1155,11 +1166,11 @@ final class CaptureControlsComponent: Component {
|
||||
contentView.maskContainerView.frame = contentView.convert(contentView.bounds, to: self)
|
||||
}
|
||||
|
||||
if let lockView = self.lockView.view as? LockContentComponent.View {
|
||||
if lockView.maskContainerView.superview == nil {
|
||||
self.addSubview(lockView.maskContainerView)
|
||||
if let buttonView = self.lockView.view as? CameraButton.View, let contentView = buttonView.contentView.componentView as? LockContentComponent.View {
|
||||
if contentView.maskContainerView.superview == nil {
|
||||
self.addSubview(contentView.maskContainerView)
|
||||
}
|
||||
lockView.maskContainerView.center = lockView.center
|
||||
contentView.maskContainerView.center = buttonView.center
|
||||
}
|
||||
|
||||
return size
|
||||
|
@ -173,7 +173,7 @@ public final class StoryContentContextImpl: StoryContentContext {
|
||||
isExpired: false,
|
||||
isPublic: false,
|
||||
isPending: true,
|
||||
isCloseFriends: false,
|
||||
isCloseFriends: item.privacy.base == .closeFriends,
|
||||
isForwardingDisabled: false,
|
||||
isEdited: false
|
||||
))
|
||||
|
@ -1585,11 +1585,7 @@ public final class StoryItemSetContainerComponent: Component {
|
||||
|
||||
func update(component: StoryItemSetContainerComponent, availableSize: CGSize, state: EmptyComponentState, environment: Environment<Empty>, transition: Transition) -> CGSize {
|
||||
let isFirstTime = self.component == nil
|
||||
|
||||
// if let hint = transition.userData(TextFieldComponent.AnimationHint.self), case .textFocusChanged = hint.kind, !hasFirstResponder(self) {
|
||||
// self.sendMessageContext.currentInputMode = .text
|
||||
// }
|
||||
|
||||
|
||||
if self.component == nil {
|
||||
self.sendMessageContext.setup(context: component.context, view: self, inputPanelExternalState: self.inputPanelExternalState, keyboardInputData: component.keyboardInputData)
|
||||
}
|
||||
@ -1765,7 +1761,11 @@ public final class StoryItemSetContainerComponent: Component {
|
||||
return
|
||||
}
|
||||
self.sendMessageContext.toggleInputMode()
|
||||
self.state?.updated(transition: .immediate)
|
||||
if !hasFirstResponder(self) {
|
||||
self.state?.updated(transition: .spring(duration: 0.4))
|
||||
} else {
|
||||
self.state?.updated(transition: .immediate)
|
||||
}
|
||||
},
|
||||
timeoutAction: nil,
|
||||
forwardAction: component.slice.item.storyItem.isPublic ? { [weak self] in
|
||||
@ -2242,8 +2242,9 @@ public final class StoryItemSetContainerComponent: Component {
|
||||
if moreButtonView.superview == nil {
|
||||
self.controlsContainerView.addSubview(moreButtonView)
|
||||
}
|
||||
moreButtonView.isUserInteractionEnabled = !component.slice.item.storyItem.isPending
|
||||
transition.setFrame(view: moreButtonView, frame: CGRect(origin: CGPoint(x: headerRightOffset - moreButtonSize.width, y: 2.0), size: moreButtonSize))
|
||||
transition.setAlpha(view: moreButtonView, alpha: component.slice.item.storyItem.isPending ? 0.0 : 1.0)
|
||||
transition.setAlpha(view: moreButtonView, alpha: component.slice.item.storyItem.isPending ? 0.5 : 1.0)
|
||||
headerRightOffset -= moreButtonSize.width + 15.0
|
||||
}
|
||||
|
||||
@ -2914,7 +2915,7 @@ public final class StoryItemSetContainerComponent: Component {
|
||||
if let reactionContextNode = self.disappearingReactionContextNode {
|
||||
if !reactionContextNode.isAnimatingOutToReaction {
|
||||
transition.setFrame(view: reactionContextNode.view, frame: CGRect(origin: CGPoint(), size: availableSize))
|
||||
reactionContextNode.updateLayout(size: availableSize, insets: UIEdgeInsets(), anchorRect: reactionsAnchorRect, isCoveredByInput: false, isAnimatingOut: false, transition: transition.containedViewLayoutTransition)
|
||||
reactionContextNode.updateLayout(size: availableSize, insets: UIEdgeInsets(), anchorRect: reactionsAnchorRect, centerAligned: true, isCoveredByInput: false, isAnimatingOut: false, transition: transition.containedViewLayoutTransition)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -254,9 +254,12 @@ final class StoryItemSetContainerSendMessage {
|
||||
|
||||
let heightAndOverflow = inputMediaNode.updateLayout(width: availableSize.width, leftInset: 0.0, rightInset: 0.0, bottomInset: bottomInset, standardInputHeight: deviceMetrics.standardInputHeight(inLandscape: false), inputHeight: inputHeight, maximumHeight: availableSize.height, inputPanelHeight: 0.0, transition: .immediate, interfaceState: presentationInterfaceState, layoutMetrics: metrics, deviceMetrics: deviceMetrics, isVisible: true, isExpanded: false)
|
||||
let inputNodeHeight = heightAndOverflow.0
|
||||
var inputNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: availableSize.height - inputNodeHeight), size: CGSize(width: availableSize.width, height: inputNodeHeight))
|
||||
let inputNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: availableSize.height - inputNodeHeight), size: CGSize(width: availableSize.width, height: inputNodeHeight))
|
||||
|
||||
if self.needsInputActivation {
|
||||
inputNodeFrame = inputNodeFrame.offsetBy(dx: 0.0, dy: inputNodeHeight)
|
||||
let inputNodeFrame = inputNodeFrame.offsetBy(dx: 0.0, dy: inputNodeHeight)
|
||||
Transition.immediate.setFrame(layer: inputMediaNode.layer, frame: inputNodeFrame)
|
||||
Transition.immediate.setFrame(layer: self.inputMediaNodeBackground, frame: inputNodeFrame)
|
||||
}
|
||||
transition.setFrame(layer: inputMediaNode.layer, frame: inputNodeFrame)
|
||||
transition.setFrame(layer: self.inputMediaNodeBackground, frame: inputNodeFrame)
|
||||
@ -534,8 +537,7 @@ final class StoryItemSetContainerSendMessage {
|
||||
let peer = component.slice.peer
|
||||
let _ = (legacyEnqueueGifMessage(account: component.context.account, data: data) |> deliverOnMainQueue).start(next: { [weak self, weak view] message in
|
||||
if let self, let view {
|
||||
let messages = self.transformEnqueueMessages(view: view, messages: [message], silentPosting: false)
|
||||
self.sendMessages(view: view, peer: peer, messages: messages)
|
||||
self.sendMessages(view: view, peer: peer, messages: [message])
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -590,8 +592,7 @@ final class StoryItemSetContainerSendMessage {
|
||||
let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: Int64.random(in: Int64.min ... Int64.max)), partialReference: nil, resource: resource, previewRepresentations: [], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "image/webp", size: Int64(data.count), attributes: fileAttributes)
|
||||
let message = EnqueueMessage.message(text: "", attributes: [], inlineStickers: [:], mediaReference: .standalone(media: media), replyToMessageId: nil, replyToStoryId: nil, localGroupingKey: nil, correlationId: nil, bubbleUpEmojiOrStickersets: [])
|
||||
|
||||
let messages = self.transformEnqueueMessages(view: view, messages: [message], silentPosting: false)
|
||||
self.sendMessages(view: view, peer: peer, messages: messages)
|
||||
self.sendMessages(view: view, peer: peer, messages: [message], silentPosting: false)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1340,7 +1341,7 @@ final class StoryItemSetContainerSendMessage {
|
||||
}
|
||||
}
|
||||
|
||||
self.sendMessages(view: view, peer: peer, messages: self.transformEnqueueMessages(view: view, messages: enqueueMessages, silentPosting: silent, scheduleTime: scheduleTime))
|
||||
self.sendMessages(view: view, peer: peer, messages: enqueueMessages, silentPosting: silent, scheduleTime: scheduleTime)
|
||||
} else if let peer = peers.first {
|
||||
let dataSignal: Signal<(EnginePeer?, DeviceContactExtendedData?), NoError>
|
||||
switch peer {
|
||||
@ -1395,7 +1396,7 @@ final class StoryItemSetContainerSendMessage {
|
||||
}
|
||||
enqueueMessages.append(.message(text: "", attributes: [], inlineStickers: [:], mediaReference: .standalone(media: media), replyToMessageId: nil, replyToStoryId: focusedStoryId, localGroupingKey: nil, correlationId: nil, bubbleUpEmojiOrStickersets: []))
|
||||
|
||||
self.sendMessages(view: view, peer: targetPeer, messages: self.transformEnqueueMessages(view: view, messages: enqueueMessages, silentPosting: silent, scheduleTime: scheduleTime))
|
||||
self.sendMessages(view: view, peer: targetPeer, messages: enqueueMessages, silentPosting: silent, scheduleTime: scheduleTime)
|
||||
} else {
|
||||
let contactController = component.context.sharedContext.makeDeviceContactInfoController(context: component.context, subject: .filter(peer: peerAndContactData.0?._asPeer(), contactId: nil, contactData: contactData, completion: { [weak self, weak view] peer, contactData in
|
||||
guard let self, let view else {
|
||||
@ -1414,7 +1415,7 @@ final class StoryItemSetContainerSendMessage {
|
||||
}
|
||||
enqueueMessages.append(.message(text: "", attributes: [], inlineStickers: [:], mediaReference: .standalone(media: media), replyToMessageId: nil, replyToStoryId: focusedStoryId, localGroupingKey: nil, correlationId: nil, bubbleUpEmojiOrStickersets: []))
|
||||
|
||||
self.sendMessages(view: view, peer: targetPeer, messages: self.transformEnqueueMessages(view: view, messages: enqueueMessages, silentPosting: silent, scheduleTime: scheduleTime))
|
||||
self.sendMessages(view: view, peer: targetPeer, messages: enqueueMessages, silentPosting: silent, scheduleTime: scheduleTime)
|
||||
}
|
||||
}), completed: nil, cancelled: nil)
|
||||
component.controller()?.push(contactController)
|
||||
@ -2168,11 +2169,11 @@ final class StoryItemSetContainerSendMessage {
|
||||
}
|
||||
}
|
||||
|
||||
private func sendMessages(view: StoryItemSetContainerComponent.View, peer: EnginePeer, messages: [EnqueueMessage], media: Bool = false, commit: Bool = false) {
|
||||
private func sendMessages(view: StoryItemSetContainerComponent.View, peer: EnginePeer, messages: [EnqueueMessage], silentPosting: Bool = false, scheduleTime: Int32? = nil) {
|
||||
guard let component = view.component else {
|
||||
return
|
||||
}
|
||||
let _ = (enqueueMessages(account: component.context.account, peerId: peer.id, messages: self.transformEnqueueMessages(view: view, messages: messages, silentPosting: false))
|
||||
let _ = (enqueueMessages(account: component.context.account, peerId: peer.id, messages: self.transformEnqueueMessages(view: view, messages: messages, silentPosting: silentPosting, scheduleTime: scheduleTime))
|
||||
|> deliverOnMainQueue).start(next: { [weak self, weak view] messageIds in
|
||||
Queue.mainQueue().after(0.3) {
|
||||
if let view {
|
||||
@ -2241,10 +2242,8 @@ final class StoryItemSetContainerSendMessage {
|
||||
}
|
||||
mappedMessages.append(message)
|
||||
}
|
||||
|
||||
let messages = strongSelf.transformEnqueueMessages(view: view, messages: mappedMessages, silentPosting: silentPosting, scheduleTime: scheduleTime)
|
||||
|
||||
strongSelf.sendMessages(view: view, peer: peer, messages: messages.map { $0.withUpdatedReplyToMessageId(replyToMessageId).withUpdatedReplyToStoryId(replyToStoryId) }, media: true)
|
||||
strongSelf.sendMessages(view: view, peer: peer, messages: mappedMessages.map { $0.withUpdatedReplyToMessageId(replyToMessageId).withUpdatedReplyToStoryId(replyToStoryId) }, silentPosting: silentPosting, scheduleTime: scheduleTime)
|
||||
|
||||
completion()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user