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