Adjust inline action

This commit is contained in:
Ali 2023-07-17 01:09:12 +04:00
parent 8d76b157c2
commit 11976ffd15

View File

@ -983,15 +983,20 @@ public final class ChatListContainerNode: ASDisplayNode, UIGestureRecognizerDele
} }
} }
itemNode.listNode.didBeginInteractiveDragging = { [weak self] _ in itemNode.listNode.didBeginInteractiveDragging = { [weak self] _ in
guard let self, !self.isInlineMode else { guard let self else {
return
}
guard let validLayout = self.validLayout else {
return return
} }
self.didBeginInteractiveDragging?() self.didBeginInteractiveDragging?()
if self.isInlineMode {
return
}
guard let validLayout = self.validLayout else {
return
}
let tempTopInset: CGFloat let tempTopInset: CGFloat
if validLayout.inlineNavigationLocation != nil { if validLayout.inlineNavigationLocation != nil {
tempTopInset = 0.0 tempTopInset = 0.0
@ -2408,8 +2413,15 @@ final class ChatListControllerNode: ASDisplayNode, UIGestureRecognizerDelegate {
self.updateNavigationScrolling(navigationHeight: containerLayout.navigationBarHeight, transition: self.tempNavigationScrollingTransition ?? .immediate) self.updateNavigationScrolling(navigationHeight: containerLayout.navigationBarHeight, transition: self.tempNavigationScrollingTransition ?? .immediate)
if listView.isDragging { if listView.isDragging {
var overscrollSelectedId: EnginePeer.Id?
var overscrollHiddenChatItemsAllowed = false
if let controller = self.controller, let componentView = controller.chatListHeaderView(), let storyPeerListView = componentView.storyPeerListView() { if let controller = self.controller, let componentView = controller.chatListHeaderView(), let storyPeerListView = componentView.storyPeerListView() {
if let peerId = storyPeerListView.overscrollSelectedId { overscrollSelectedId = storyPeerListView.overscrollSelectedId
overscrollHiddenChatItemsAllowed = storyPeerListView.overscrollHiddenChatItemsAllowed
}
if let controller = self.controller {
if let peerId = overscrollSelectedId {
if self.allowOverscrollStoryExpansion && self.inlineStackContainerNode == nil && isPrimary { if self.allowOverscrollStoryExpansion && self.inlineStackContainerNode == nil && isPrimary {
self.allowOverscrollStoryExpansion = false self.allowOverscrollStoryExpansion = false
self.allowOverscrollItemExpansion = false self.allowOverscrollItemExpansion = false
@ -2418,21 +2430,40 @@ final class ChatListControllerNode: ASDisplayNode, UIGestureRecognizerDelegate {
controller.openStories(peerId: peerId) controller.openStories(peerId: peerId)
} }
} else if storyPeerListView.overscrollHiddenChatItemsAllowed { } else {
if self.allowOverscrollItemExpansion { if !overscrollHiddenChatItemsAllowed {
let timestamp = CACurrentMediaTime() var manuallyAllow = false
if let _ = self.currentOverscrollItemExpansionTimestamp {
if isPrimary {
if let storySubscriptions = controller.orderedStorySubscriptions, shouldDisplayStoriesInChatListHeader(storySubscriptions: storySubscriptions, isHidden: controller.location == .chatList(groupId: .archive)) {
} else {
manuallyAllow = true
}
} else { } else {
self.currentOverscrollItemExpansionTimestamp = timestamp manuallyAllow = true
} }
if let currentOverscrollItemExpansionTimestamp = self.currentOverscrollItemExpansionTimestamp, currentOverscrollItemExpansionTimestamp <= timestamp - 0.2 { if manuallyAllow, case let .known(value) = offset, value + listView.tempTopInset <= -40.0 {
self.allowOverscrollItemExpansion = false overscrollHiddenChatItemsAllowed = true
}
if isPrimary { }
self.mainContainerNode.currentItemNode.revealScrollHiddenItem()
if overscrollHiddenChatItemsAllowed {
if self.allowOverscrollItemExpansion {
let timestamp = CACurrentMediaTime()
if let _ = self.currentOverscrollItemExpansionTimestamp {
} else { } else {
self.inlineStackContainerNode?.currentItemNode.revealScrollHiddenItem() self.currentOverscrollItemExpansionTimestamp = timestamp
}
if let currentOverscrollItemExpansionTimestamp = self.currentOverscrollItemExpansionTimestamp, currentOverscrollItemExpansionTimestamp <= timestamp - 0.2 {
self.allowOverscrollItemExpansion = false
if isPrimary {
self.mainContainerNode.currentItemNode.revealScrollHiddenItem()
} else {
self.inlineStackContainerNode?.currentItemNode.revealScrollHiddenItem()
}
} }
} }
} }
@ -2470,16 +2501,16 @@ final class ChatListControllerNode: ASDisplayNode, UIGestureRecognizerDelegate {
private func didBeginInteractiveDragging(isPrimary: Bool) { private func didBeginInteractiveDragging(isPrimary: Bool) {
if isPrimary { if isPrimary {
self.allowOverscrollStoryExpansion = true self.allowOverscrollStoryExpansion = true
self.allowOverscrollItemExpansion = true
} }
self.allowOverscrollItemExpansion = true
} }
private func endedInteractiveDragging(listView: ListView, isPrimary: Bool) { private func endedInteractiveDragging(listView: ListView, isPrimary: Bool) {
if isPrimary { if isPrimary {
self.allowOverscrollStoryExpansion = false self.allowOverscrollStoryExpansion = false
self.allowOverscrollItemExpansion = false
self.currentOverscrollItemExpansionTimestamp = nil
} }
self.allowOverscrollItemExpansion = false
self.currentOverscrollItemExpansionTimestamp = nil
} }
private func contentScrollingEnded(listView: ListView, isPrimary: Bool) -> Bool { private func contentScrollingEnded(listView: ListView, isPrimary: Bool) -> Bool {
@ -2550,7 +2581,7 @@ final class ChatListControllerNode: ASDisplayNode, UIGestureRecognizerDelegate {
inlineStackContainerNode.contentOffsetChanged = { [weak self] offset, listView in inlineStackContainerNode.contentOffsetChanged = { [weak self] offset, listView in
self?.contentOffsetChanged(offset: offset, listView: listView, isPrimary: false) self?.contentOffsetChanged(offset: offset, listView: listView, isPrimary: false)
} }
inlineStackContainerNode.endedInteractiveDragging = { [weak self] listView in inlineStackContainerNode.didBeginInteractiveDragging = { [weak self] in
self?.didBeginInteractiveDragging(isPrimary: false) self?.didBeginInteractiveDragging(isPrimary: false)
} }
inlineStackContainerNode.endedInteractiveDragging = { [weak self] listView in inlineStackContainerNode.endedInteractiveDragging = { [weak self] listView in