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
e163bc76a7
commit
331cb1edc6
@ -232,7 +232,6 @@ public class MinimizedContainerImpl: ASDisplayNode, MinimizedContainer, ASScroll
|
||||
|
||||
private var highlightedItemId: AnyHashable?
|
||||
|
||||
private var dismissGestureRecognizer: UIPanGestureRecognizer?
|
||||
private var dismissingItemId: AnyHashable?
|
||||
private var dismissingItemOffset: CGFloat?
|
||||
|
||||
@ -297,11 +296,10 @@ public class MinimizedContainerImpl: ASDisplayNode, MinimizedContainer, ASScroll
|
||||
self.scrollView.showsVerticalScrollIndicator = false
|
||||
self.scrollView.showsHorizontalScrollIndicator = false
|
||||
|
||||
let dismissGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.dismissPan(_:)))
|
||||
dismissGestureRecognizer.delegate = self.wrappedGestureRecognizerDelegate
|
||||
dismissGestureRecognizer.delaysTouchesBegan = true
|
||||
self.scrollView.addGestureRecognizer(dismissGestureRecognizer)
|
||||
self.dismissGestureRecognizer = dismissGestureRecognizer
|
||||
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.panGesture(_:)))
|
||||
panGestureRecognizer.delegate = self.wrappedGestureRecognizerDelegate
|
||||
panGestureRecognizer.delaysTouchesBegan = true
|
||||
self.scrollView.addGestureRecognizer(panGestureRecognizer)
|
||||
}
|
||||
|
||||
func item(at y: CGFloat) -> Int? {
|
||||
@ -323,13 +321,35 @@ public class MinimizedContainerImpl: ASDisplayNode, MinimizedContainer, ASScroll
|
||||
let location = panGesture.location(in: gestureRecognizer.view)
|
||||
let velocity = panGesture.velocity(in: gestureRecognizer.view)
|
||||
|
||||
if abs(velocity.x) > abs(velocity.y), let _ = self.item(at: location.y) {
|
||||
return true
|
||||
if let _ = self.item(at: location.y) {
|
||||
if self.isExpanded {
|
||||
return abs(velocity.x) > abs(velocity.y)
|
||||
} else {
|
||||
return abs(velocity.y) > abs(velocity.x)
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@objc func dismissPan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
@objc func panGesture(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
if self.isExpanded {
|
||||
self.dismissPanGesture(gestureRecognizer)
|
||||
} else {
|
||||
self.expandPanGesture(gestureRecognizer)
|
||||
}
|
||||
}
|
||||
|
||||
@objc func expandPanGesture(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
let translation = gestureRecognizer.translation(in: self.view)
|
||||
if translation.y < -10.0 {
|
||||
gestureRecognizer.isEnabled = false
|
||||
gestureRecognizer.isEnabled = true
|
||||
|
||||
self.expand()
|
||||
}
|
||||
}
|
||||
|
||||
@objc func dismissPanGesture(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
let scrollView = self.scrollView
|
||||
|
||||
switch gestureRecognizer.state {
|
||||
@ -357,7 +377,8 @@ public class MinimizedContainerImpl: ASDisplayNode, MinimizedContainer, ASScroll
|
||||
var needsLayout = true
|
||||
if let itemId = self.dismissingItemId {
|
||||
if let offset = self.dismissingItemOffset {
|
||||
if offset < -self.frame.width / 4.0 {
|
||||
let velocity = gestureRecognizer.velocity(in: self.view)
|
||||
if offset < -self.frame.width / 3.0 || velocity.x < -300.0 {
|
||||
self.currentTransition = .dismiss(itemId: itemId)
|
||||
|
||||
self.items.removeAll(where: { $0.id == itemId })
|
||||
@ -449,6 +470,18 @@ public class MinimizedContainerImpl: ASDisplayNode, MinimizedContainer, ASScroll
|
||||
completion()
|
||||
})
|
||||
}
|
||||
|
||||
public func expand() {
|
||||
guard !self.items.isEmpty && !self.isExpanded else {
|
||||
return
|
||||
}
|
||||
if self.items.count == 1, let item = self.items.first {
|
||||
self.navigationController?.maximizeViewController(item.controller, animated: true)
|
||||
} else {
|
||||
self.isExpanded = true
|
||||
self.requestUpdate(transition: .animated(duration: 0.4, curve: .spring))
|
||||
}
|
||||
}
|
||||
|
||||
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
guard self.isExpanded else {
|
||||
@ -569,12 +602,7 @@ public class MinimizedContainerImpl: ASDisplayNode, MinimizedContainer, ASScroll
|
||||
if self.isExpanded {
|
||||
self.navigationController?.maximizeViewController(item.controller, animated: true)
|
||||
} else {
|
||||
if self.items.count == 1 {
|
||||
self.navigationController?.maximizeViewController(item.controller, animated: true)
|
||||
} else {
|
||||
self.isExpanded = true
|
||||
self.requestUpdate(transition: .animated(duration: 0.4, curve: .spring))
|
||||
}
|
||||
self.expand()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3754,7 +3754,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
let openWebView = {
|
||||
if source == .menu {
|
||||
strongSelf.updateChatPresentationInterfaceState(interactive: false) { state in
|
||||
return state.updatedShowWebView(true).updatedForceInputCommandsHidden(true)
|
||||
return state.updatedForceInputCommandsHidden(true)
|
||||
// return state.updatedShowWebView(true).updatedForceInputCommandsHidden(true)
|
||||
}
|
||||
|
||||
let context = strongSelf.context
|
||||
|
@ -1743,7 +1743,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate, Ch
|
||||
self.menuButtonIconNode.enqueueState(.close, animated: false)
|
||||
} else if case .webView = interfaceState.botMenuButton, let previousShowWebView = previousState?.showWebView, previousShowWebView != interfaceState.showWebView {
|
||||
if interfaceState.showWebView {
|
||||
self.menuButtonIconNode.enqueueState(.close, animated: true)
|
||||
// self.menuButtonIconNode.enqueueState(.close, animated: true)
|
||||
} else {
|
||||
self.menuButtonIconNode.enqueueState(.app, animated: true)
|
||||
}
|
||||
@ -4536,7 +4536,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate, Ch
|
||||
}
|
||||
} else if case let .webView(title, url) = presentationInterfaceState.botMenuButton {
|
||||
let willShow = !(self.presentationInterfaceState?.showWebView ?? false)
|
||||
if willShow {
|
||||
if willShow || "".isEmpty {
|
||||
self.interfaceInteraction?.openWebView(title, url, false, .menu)
|
||||
} else {
|
||||
self.interfaceInteraction?.updateShowWebView { _ in
|
||||
|
Loading…
x
Reference in New Issue
Block a user