mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Add more mini app open buttons
This commit is contained in:
parent
522be0ffd4
commit
1c96740866
@ -1256,6 +1256,12 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
||||
}
|
||||
}
|
||||
|
||||
self.chatListDisplayNode.dismissSearch = { [weak self] in
|
||||
if let self {
|
||||
self.deactivateSearch(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
self.chatListDisplayNode.requestOpenRecentPeerOptions = { [weak self] peer in
|
||||
if let strongSelf = self {
|
||||
strongSelf.view.window?.endEditing(true)
|
||||
|
@ -1095,7 +1095,8 @@ final class ChatListControllerNode: ASDisplayNode, ASGestureRecognizerDelegate {
|
||||
var isEmptyUpdated: ((Bool) -> Void)?
|
||||
var emptyListAction: ((EnginePeer.Id?) -> Void)?
|
||||
var cancelEditing: (() -> Void)?
|
||||
|
||||
var dismissSearch: (() -> Void)?
|
||||
|
||||
let debugListView = ListView()
|
||||
|
||||
init(context: AccountContext, location: ChatListControllerLocation, previewing: Bool, controlsHistoryPreload: Bool, presentationData: PresentationData, animationCache: AnimationCache, animationRenderer: MultiAnimationRenderer, controller: ChatListControllerImpl) {
|
||||
@ -1668,6 +1669,9 @@ final class ChatListControllerNode: ASDisplayNode, ASGestureRecognizerDelegate {
|
||||
}, navigationController: navigationController, parentController: { [weak self] in
|
||||
return self?.controller
|
||||
})
|
||||
contentNode.dismissSearch = { [weak self] in
|
||||
self?.dismissSearch?()
|
||||
}
|
||||
|
||||
self.searchDisplayController = SearchDisplayController(presentationData: self.presentationData, mode: .list, contentNode: contentNode, cancel: { [weak self] in
|
||||
if let requestDeactivateSearch = self?.requestDeactivateSearch {
|
||||
|
@ -61,8 +61,9 @@ final class ChatListSearchInteraction {
|
||||
let getSelectedMessageIds: () -> Set<EngineMessage.Id>?
|
||||
let openStories: ((PeerId, ASDisplayNode) -> Void)?
|
||||
let switchToFilter: (ChatListSearchPaneKey) -> Void
|
||||
let dismissSearch: () -> Void
|
||||
|
||||
init(openPeer: @escaping (EnginePeer, EnginePeer?, Int64?, Bool) -> Void, openDisabledPeer: @escaping (EnginePeer, Int64?, ChatListDisabledPeerReason) -> Void, openMessage: @escaping (EnginePeer, Int64?, EngineMessage.Id, Bool) -> Void, openUrl: @escaping (String) -> Void, clearRecentSearch: @escaping () -> Void, addContact: @escaping (String) -> Void, toggleMessageSelection: @escaping (EngineMessage.Id, Bool) -> Void, messageContextAction: @escaping ((EngineMessage, ASDisplayNode?, CGRect?, UIGestureRecognizer?, ChatListSearchPaneKey, (id: String, size: Int64, isFirstInList: Bool)?) -> Void), mediaMessageContextAction: @escaping ((EngineMessage, ASDisplayNode?, CGRect?, UIGestureRecognizer?) -> Void), peerContextAction: ((EnginePeer, ChatListSearchContextActionSource, ASDisplayNode, ContextGesture?, CGPoint?) -> Void)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void, getSelectedMessageIds: @escaping () -> Set<EngineMessage.Id>?, openStories: ((PeerId, ASDisplayNode) -> Void)?, switchToFilter: @escaping (ChatListSearchPaneKey) -> Void) {
|
||||
init(openPeer: @escaping (EnginePeer, EnginePeer?, Int64?, Bool) -> Void, openDisabledPeer: @escaping (EnginePeer, Int64?, ChatListDisabledPeerReason) -> Void, openMessage: @escaping (EnginePeer, Int64?, EngineMessage.Id, Bool) -> Void, openUrl: @escaping (String) -> Void, clearRecentSearch: @escaping () -> Void, addContact: @escaping (String) -> Void, toggleMessageSelection: @escaping (EngineMessage.Id, Bool) -> Void, messageContextAction: @escaping ((EngineMessage, ASDisplayNode?, CGRect?, UIGestureRecognizer?, ChatListSearchPaneKey, (id: String, size: Int64, isFirstInList: Bool)?) -> Void), mediaMessageContextAction: @escaping ((EngineMessage, ASDisplayNode?, CGRect?, UIGestureRecognizer?) -> Void), peerContextAction: ((EnginePeer, ChatListSearchContextActionSource, ASDisplayNode, ContextGesture?, CGPoint?) -> Void)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void, getSelectedMessageIds: @escaping () -> Set<EngineMessage.Id>?, openStories: ((PeerId, ASDisplayNode) -> Void)?, switchToFilter: @escaping (ChatListSearchPaneKey) -> Void, dismissSearch: @escaping () -> Void) {
|
||||
self.openPeer = openPeer
|
||||
self.openDisabledPeer = openDisabledPeer
|
||||
self.openMessage = openMessage
|
||||
@ -78,6 +79,7 @@ final class ChatListSearchInteraction {
|
||||
self.getSelectedMessageIds = getSelectedMessageIds
|
||||
self.openStories = openStories
|
||||
self.switchToFilter = switchToFilter
|
||||
self.dismissSearch = dismissSearch
|
||||
}
|
||||
}
|
||||
|
||||
@ -100,6 +102,8 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
||||
private let openMessage: (EnginePeer, Int64?, EngineMessage.Id, Bool) -> Void
|
||||
private let navigationController: NavigationController?
|
||||
|
||||
var dismissSearch: (() -> Void)?
|
||||
|
||||
private let dimNode: ASDisplayNode
|
||||
let filterContainerNode: ChatListSearchFiltersContainerNode
|
||||
private let paneContainerNode: ChatListSearchPaneContainerNode
|
||||
@ -298,6 +302,8 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
||||
Queue.mainQueue().justDispatch {
|
||||
self.paneContainerNode.requestSelectPane(filter)
|
||||
}
|
||||
}, dismissSearch: { [weak self] in
|
||||
self?.dismissSearch?()
|
||||
})
|
||||
self.paneContainerNode.interaction = interaction
|
||||
|
||||
|
@ -614,7 +614,7 @@ public enum ChatListSearchEntry: Comparable, Identifiable {
|
||||
})
|
||||
|
||||
return ContactsPeerItem(presentationData: ItemListPresentationData(presentationData), sortOrder: .firstLast, displayOrder: .firstLast, context: context, peerMode: .generalSearch(isSavedMessages: false), peer: .thread(peer: peer, title: threadInfo.info.title, icon: threadInfo.info.icon, color: threadInfo.info.iconColor), status: .none, badge: nil, enabled: true, selection: .none, editing: ContactsPeerItemEditing(editable: false, editing: false, revealed: false), index: nil, header: header, action: { _ in
|
||||
interaction.peerSelected(peer, nil, threadInfo.id, nil)
|
||||
interaction.peerSelected(peer, nil, threadInfo.id, nil, false)
|
||||
}, contextAction: nil, animationCache: interaction.animationCache, animationRenderer: interaction.animationRenderer)
|
||||
case let .recentlySearchedPeer(peer, associatedPeer, unreadBadge, _, theme, strings, nameSortOrder, nameDisplayOrder, storyStats, requiresPremiumForMessaging):
|
||||
let primaryPeer: EnginePeer
|
||||
@ -667,6 +667,7 @@ public enum ChatListSearchEntry: Comparable, Identifiable {
|
||||
badge = ContactsPeerItemBadge(count: unreadBadge.0, type: unreadBadge.1 ? .inactive : .active)
|
||||
}
|
||||
|
||||
var buttonAction: ContactsPeerItemButtonAction?
|
||||
let header: ChatListSearchItemHeader?
|
||||
if filter.contains(.removeSearchHeader) {
|
||||
header = nil
|
||||
@ -676,15 +677,24 @@ public enum ChatListSearchEntry: Comparable, Identifiable {
|
||||
headerType = .chats
|
||||
} else {
|
||||
headerType = .recentPeers
|
||||
|
||||
if case .chats = key, case let .user(user) = primaryPeer, let botInfo = user.botInfo, botInfo.flags.contains(.hasWebApp) {
|
||||
buttonAction = ContactsPeerItemButtonAction(
|
||||
title: presentationData.strings.ChatList_Search_Open,
|
||||
action: { peer, _, _ in
|
||||
interaction.peerSelected(primaryPeer, nil, nil, nil, true)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
header = ChatListSearchItemHeader(type: headerType, theme: theme, strings: strings, actionTitle: nil, action: nil)
|
||||
}
|
||||
|
||||
return ContactsPeerItem(presentationData: ItemListPresentationData(presentationData), sortOrder: nameSortOrder, displayOrder: nameDisplayOrder, context: context, peerMode: .generalSearch(isSavedMessages: false), peer: .peer(peer: primaryPeer, chatPeer: chatPeer), status: .none, badge: badge, requiresPremiumForMessaging: requiresPremiumForMessaging, enabled: enabled, selection: .none, editing: ContactsPeerItemEditing(editable: false, editing: false, revealed: false), index: nil, header: header, action: { contactPeer in
|
||||
|
||||
return ContactsPeerItem(presentationData: ItemListPresentationData(presentationData), sortOrder: nameSortOrder, displayOrder: nameDisplayOrder, context: context, peerMode: .generalSearch(isSavedMessages: false), peer: .peer(peer: primaryPeer, chatPeer: chatPeer), status: .none, badge: badge, requiresPremiumForMessaging: requiresPremiumForMessaging, enabled: enabled, selection: .none, editing: ContactsPeerItemEditing(editable: false, editing: false, revealed: false), buttonAction: buttonAction, index: nil, header: header, action: { contactPeer in
|
||||
if case let .peer(maybePeer, maybeChatPeer) = contactPeer, let peer = maybePeer, let chatPeer = maybeChatPeer {
|
||||
interaction.peerSelected(chatPeer, peer, nil, nil)
|
||||
interaction.peerSelected(chatPeer, peer, nil, nil, false)
|
||||
} else {
|
||||
interaction.peerSelected(peer, nil, nil, nil)
|
||||
interaction.peerSelected(peer, nil, nil, nil, false)
|
||||
}
|
||||
}, disabledAction: { _ in
|
||||
interaction.disabledPeerSelected(peer, nil, requiresPremiumForMessaging ? .premiumRequired : .generic)
|
||||
@ -803,12 +813,22 @@ public enum ChatListSearchEntry: Comparable, Identifiable {
|
||||
status = .custom(string: presentationData.strings.Bot_GenericBotStatus, multiline: false, isActive: false, icon: nil)
|
||||
}
|
||||
}
|
||||
|
||||
var buttonAction: ContactsPeerItemButtonAction?
|
||||
if case .chats = key, case let .user(user) = primaryPeer, let botInfo = user.botInfo, botInfo.flags.contains(.hasWebApp) {
|
||||
buttonAction = ContactsPeerItemButtonAction(
|
||||
title: presentationData.strings.ChatList_Search_Open,
|
||||
action: { peer, _, _ in
|
||||
interaction.peerSelected(primaryPeer, nil, nil, nil, true)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
return ContactsPeerItem(presentationData: ItemListPresentationData(presentationData), sortOrder: nameSortOrder, displayOrder: nameDisplayOrder, context: context, peerMode: .generalSearch(isSavedMessages: isSavedMessages), peer: .peer(peer: primaryPeer, chatPeer: chatPeer), status: status, badge: badge, requiresPremiumForMessaging: requiresPremiumForMessaging, enabled: enabled, selection: .none, editing: ContactsPeerItemEditing(editable: false, editing: false, revealed: false), index: nil, header: header, action: { contactPeer in
|
||||
return ContactsPeerItem(presentationData: ItemListPresentationData(presentationData), sortOrder: nameSortOrder, displayOrder: nameDisplayOrder, context: context, peerMode: .generalSearch(isSavedMessages: isSavedMessages), peer: .peer(peer: primaryPeer, chatPeer: chatPeer), status: status, badge: badge, requiresPremiumForMessaging: requiresPremiumForMessaging, enabled: enabled, selection: .none, editing: ContactsPeerItemEditing(editable: false, editing: false, revealed: false), buttonAction: buttonAction, index: nil, header: header, action: { contactPeer in
|
||||
if case let .peer(maybePeer, maybeChatPeer) = contactPeer, let peer = maybePeer, let chatPeer = maybeChatPeer {
|
||||
interaction.peerSelected(chatPeer, peer, nil, nil)
|
||||
interaction.peerSelected(chatPeer, peer, nil, nil, false)
|
||||
} else {
|
||||
interaction.peerSelected(peer, nil, nil, nil)
|
||||
interaction.peerSelected(peer, nil, nil, nil, false)
|
||||
}
|
||||
}, disabledAction: { _ in
|
||||
interaction.disabledPeerSelected(peer, nil, requiresPremiumForMessaging ? .premiumRequired : .generic)
|
||||
@ -891,7 +911,7 @@ public enum ChatListSearchEntry: Comparable, Identifiable {
|
||||
}
|
||||
|
||||
return ContactsPeerItem(presentationData: ItemListPresentationData(presentationData), sortOrder: nameSortOrder, displayOrder: nameDisplayOrder, context: context, peerMode: .generalSearch(isSavedMessages: isSavedMessages), peer: .peer(peer: EnginePeer(peer.peer), chatPeer: EnginePeer(peer.peer)), status: .addressName(suffixString), badge: badge, requiresPremiumForMessaging: requiresPremiumForMessaging, enabled: enabled, selection: .none, editing: ContactsPeerItemEditing(editable: false, editing: false, revealed: false), index: nil, header: header, searchQuery: query, action: { _ in
|
||||
interaction.peerSelected(EnginePeer(peer.peer), nil, nil, nil)
|
||||
interaction.peerSelected(EnginePeer(peer.peer), nil, nil, nil, false)
|
||||
}, disabledAction: { _ in
|
||||
interaction.disabledPeerSelected(EnginePeer(peer.peer), nil, requiresPremiumForMessaging ? .premiumRequired : .generic)
|
||||
}, contextAction: peerContextAction.flatMap { peerContextAction in
|
||||
@ -2883,9 +2903,29 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
||||
}
|
||||
|
||||
let chatListInteraction = ChatListNodeInteraction(context: context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {
|
||||
}, peerSelected: { [weak self] peer, chatPeer, threadId, _ in
|
||||
}, peerSelected: { [weak self] peer, chatPeer, threadId, _, openApp in
|
||||
interaction.dismissInput()
|
||||
interaction.openPeer(peer, chatPeer, threadId, false)
|
||||
if openApp, let self {
|
||||
if case let .user(user) = peer, let botInfo = user.botInfo, botInfo.flags.contains(.hasWebApp), let parentController = self.parentController {
|
||||
context.sharedContext.openWebApp(
|
||||
context: context,
|
||||
parentController: parentController,
|
||||
updatedPresentationData: nil,
|
||||
botPeer: peer,
|
||||
chatPeer: nil,
|
||||
threadId: nil,
|
||||
buttonText: "",
|
||||
url: "",
|
||||
simple: true,
|
||||
source: .generic,
|
||||
skipTermsOfService: true,
|
||||
payload: nil
|
||||
)
|
||||
interaction.dismissSearch()
|
||||
}
|
||||
} else {
|
||||
interaction.openPeer(peer, chatPeer, threadId, false)
|
||||
}
|
||||
switch location {
|
||||
case .chatList, .forum:
|
||||
let _ = context.engine.peers.addRecentlySearchedPeer(peerId: peer.id).startStandalone()
|
||||
@ -3851,6 +3891,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
||||
skipTermsOfService: true,
|
||||
payload: nil
|
||||
)
|
||||
interaction.dismissSearch()
|
||||
} else {
|
||||
interaction.openPeer(peer, nil, threadId, true)
|
||||
}
|
||||
@ -4853,7 +4894,7 @@ public final class ChatListSearchShimmerNode: ASDisplayNode {
|
||||
let timestamp1: Int32 = 100000
|
||||
var peers: [EnginePeer.Id: EnginePeer] = [:]
|
||||
peers[peer1.id] = peer1
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: animationCache, animationRenderer: animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: animationCache, animationRenderer: animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
}, messageSelected: { _, _, _, _ in}, groupSelected: { _ in }, addContact: { _ in }, setPeerIdWithRevealedOptions: { _, _ in }, setItemPinned: { _, _ in }, setPeerMuted: { _, _ in }, setPeerThreadMuted: { _, _, _ in }, deletePeer: { _, _ in }, deletePeerThread: { _, _ in }, setPeerThreadStopped: { _, _, _ in }, setPeerThreadPinned: { _, _, _ in }, setPeerThreadHidden: { _, _, _ in }, updatePeerGrouping: { _, _ in }, togglePeerMarkedUnread: { _, _ in}, toggleArchivedFolderHiddenByDefault: {}, toggleThreadsSelection: { _, _ in }, hidePsa: { _ in }, activateChatPreview: { _, _, _, gesture, _ in
|
||||
gesture?.cancel()
|
||||
}, present: { _ in }, openForumThread: { _, _ in }, openStorageManagement: {}, openPasswordSetup: {}, openPremiumIntro: {}, openPremiumGift: { _, _ in }, openPremiumManagement: {}, openActiveSessions: {
|
||||
|
@ -153,7 +153,7 @@ public final class ChatListShimmerNode: ASDisplayNode {
|
||||
let peer1: EnginePeer = .user(TelegramUser(id: EnginePeer.Id(namespace: Namespaces.Peer.CloudUser, id: EnginePeer.Id.Id._internalFromInt64Value(0)), accessHash: nil, firstName: "FirstName", lastName: nil, username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: [], emojiStatus: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, subscriberCount: nil))
|
||||
let timestamp1: Int32 = 100000
|
||||
let peers: [EnginePeer.Id: EnginePeer] = [:]
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: animationCache, animationRenderer: animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: animationCache, animationRenderer: animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
}, messageSelected: { _, _, _, _ in}, groupSelected: { _ in }, addContact: { _ in }, setPeerIdWithRevealedOptions: { _, _ in }, setItemPinned: { _, _ in }, setPeerMuted: { _, _ in }, setPeerThreadMuted: { _, _, _ in }, deletePeer: { _, _ in }, deletePeerThread: { _, _ in }, setPeerThreadStopped: { _, _, _ in }, setPeerThreadPinned: { _, _, _ in }, setPeerThreadHidden: { _, _, _ in }, updatePeerGrouping: { _, _ in }, togglePeerMarkedUnread: { _, _ in}, toggleArchivedFolderHiddenByDefault: {}, toggleThreadsSelection: { _, _ in }, hidePsa: { _ in }, activateChatPreview: { _, _, _, gesture, _ in
|
||||
gesture?.cancel()
|
||||
}, present: { _ in }, openForumThread: { _, _ in }, openStorageManagement: {}, openPasswordSetup: {}, openPremiumIntro: {}, openPremiumGift: { _, _ in }, openPremiumManagement: {}, openActiveSessions: {}, openBirthdaySetup: {}, performActiveSessionAction: { _, _ in }, openChatFolderUpdates: {}, hideChatFolderUpdates: {}, openStories: { _, _ in }, openStarsTopup: { _ in
|
||||
|
@ -503,9 +503,9 @@ public class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
|
||||
}
|
||||
self.interaction.messageSelected(peer, threadId, message, peerData.promoInfo)
|
||||
} else if let peer = peerData.peer.peer {
|
||||
self.interaction.peerSelected(peer, nil, nil, peerData.promoInfo)
|
||||
self.interaction.peerSelected(peer, nil, nil, peerData.promoInfo, false)
|
||||
} else if let peer = peerData.peer.peers[peerData.peer.peerId] {
|
||||
self.interaction.peerSelected(peer, nil, nil, peerData.promoInfo)
|
||||
self.interaction.peerSelected(peer, nil, nil, peerData.promoInfo, false)
|
||||
}
|
||||
case let .groupReference(groupReferenceData):
|
||||
self.interaction.groupSelected(groupReferenceData.groupId)
|
||||
|
@ -73,7 +73,7 @@ public final class ChatListNodeInteraction {
|
||||
}
|
||||
|
||||
let activateSearch: () -> Void
|
||||
let peerSelected: (EnginePeer, EnginePeer?, Int64?, ChatListNodeEntryPromoInfo?) -> Void
|
||||
let peerSelected: (EnginePeer, EnginePeer?, Int64?, ChatListNodeEntryPromoInfo?, Bool) -> Void
|
||||
let disabledPeerSelected: (EnginePeer, Int64?, ChatListDisabledPeerReason) -> Void
|
||||
let togglePeerSelected: (EnginePeer, Int64?) -> Void
|
||||
let togglePeersSelection: ([PeerEntry], Bool) -> Void
|
||||
@ -129,7 +129,7 @@ public final class ChatListNodeInteraction {
|
||||
animationCache: AnimationCache,
|
||||
animationRenderer: MultiAnimationRenderer,
|
||||
activateSearch: @escaping () -> Void,
|
||||
peerSelected: @escaping (EnginePeer, EnginePeer?, Int64?, ChatListNodeEntryPromoInfo?) -> Void,
|
||||
peerSelected: @escaping (EnginePeer, EnginePeer?, Int64?, ChatListNodeEntryPromoInfo?, Bool) -> Void,
|
||||
disabledPeerSelected: @escaping (EnginePeer, Int64?, ChatListDisabledPeerReason) -> Void,
|
||||
togglePeerSelected: @escaping (EnginePeer, Int64?) -> Void,
|
||||
togglePeersSelection: @escaping ([PeerEntry], Bool) -> Void,
|
||||
@ -613,7 +613,7 @@ private func mappedInsertEntries(context: AccountContext, nodeInteraction: ChatL
|
||||
if editing {
|
||||
nodeInteraction.togglePeerSelected(chatPeer, threadId)
|
||||
} else {
|
||||
nodeInteraction.peerSelected(chatPeer, nil, threadId, nil)
|
||||
nodeInteraction.peerSelected(chatPeer, nil, threadId, nil, false)
|
||||
}
|
||||
}
|
||||
}, disabledAction: (isForum && editing) && !peerEntry.requiresPremiumForMessaging ? nil : { _ in
|
||||
@ -653,7 +653,7 @@ private func mappedInsertEntries(context: AccountContext, nodeInteraction: ChatL
|
||||
if editing {
|
||||
nodeInteraction.togglePeerSelected(chatPeer, nil)
|
||||
} else {
|
||||
nodeInteraction.peerSelected(chatPeer, nil, nil, nil)
|
||||
nodeInteraction.peerSelected(chatPeer, nil, nil, nil, false)
|
||||
}
|
||||
}
|
||||
}, disabledAction: peerEntry.requiresPremiumForMessaging ? { _ in
|
||||
@ -719,7 +719,7 @@ private func mappedInsertEntries(context: AccountContext, nodeInteraction: ChatL
|
||||
index: nil,
|
||||
header: header,
|
||||
action: { _ in
|
||||
nodeInteraction.peerSelected(contactEntry.peer, nil, nil, nil)
|
||||
nodeInteraction.peerSelected(contactEntry.peer, nil, nil, nil, false)
|
||||
},
|
||||
disabledAction: nil,
|
||||
animationCache: nodeInteraction.animationCache,
|
||||
@ -957,7 +957,7 @@ private func mappedUpdateEntries(context: AccountContext, nodeInteraction: ChatL
|
||||
if editing {
|
||||
nodeInteraction.togglePeerSelected(chatPeer, threadId)
|
||||
} else {
|
||||
nodeInteraction.peerSelected(chatPeer, nil, threadId, nil)
|
||||
nodeInteraction.peerSelected(chatPeer, nil, threadId, nil, false)
|
||||
}
|
||||
}
|
||||
}, disabledAction: (isForum && editing) && !peerEntry.requiresPremiumForMessaging ? nil : { _ in
|
||||
@ -997,7 +997,7 @@ private func mappedUpdateEntries(context: AccountContext, nodeInteraction: ChatL
|
||||
if editing {
|
||||
nodeInteraction.togglePeerSelected(chatPeer, nil)
|
||||
} else {
|
||||
nodeInteraction.peerSelected(chatPeer, nil, nil, nil)
|
||||
nodeInteraction.peerSelected(chatPeer, nil, nil, nil, false)
|
||||
}
|
||||
}
|
||||
}, disabledAction: peerEntry.requiresPremiumForMessaging ? { _ in
|
||||
@ -1063,7 +1063,7 @@ private func mappedUpdateEntries(context: AccountContext, nodeInteraction: ChatL
|
||||
index: nil,
|
||||
header: header,
|
||||
action: { _ in
|
||||
nodeInteraction.peerSelected(contactEntry.peer, nil, nil, nil)
|
||||
nodeInteraction.peerSelected(contactEntry.peer, nil, nil, nil, false)
|
||||
},
|
||||
disabledAction: nil,
|
||||
animationCache: nodeInteraction.animationCache,
|
||||
@ -1395,7 +1395,7 @@ public final class ChatListNode: ListView {
|
||||
if let strongSelf = self, let activateSearch = strongSelf.activateSearch {
|
||||
activateSearch()
|
||||
}
|
||||
}, peerSelected: { [weak self] peer, _, threadId, promoInfo in
|
||||
}, peerSelected: { [weak self] peer, _, threadId, promoInfo, _ in
|
||||
if let strongSelf = self, let peerSelected = strongSelf.peerSelected {
|
||||
peerSelected(peer, threadId, true, true, promoInfo)
|
||||
}
|
||||
|
@ -218,7 +218,7 @@ private final class TextSizeSelectionControllerNode: ASDisplayNode, ASScrollView
|
||||
private func updateChatsLayout(layout: ContainerViewLayout, topInset: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
var items: [ChatListItem] = []
|
||||
|
||||
let interaction = ChatListNodeInteraction(context: self.context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
let interaction = ChatListNodeInteraction(context: self.context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
}, messageSelected: { _, _, _, _ in}, groupSelected: { _ in }, addContact: { _ in }, setPeerIdWithRevealedOptions: { _, _ in }, setItemPinned: { _, _ in }, setPeerMuted: { _, _ in }, setPeerThreadMuted: { _, _, _ in }, deletePeer: { _, _ in }, deletePeerThread: { _, _ in }, setPeerThreadStopped: { _, _, _ in }, setPeerThreadPinned: { _, _, _ in }, setPeerThreadHidden: { _, _, _ in }, updatePeerGrouping: { _, _ in }, togglePeerMarkedUnread: { _, _ in}, toggleArchivedFolderHiddenByDefault: {}, toggleThreadsSelection: { _, _ in }, hidePsa: { _ in
|
||||
}, activateChatPreview: { _, _, _, gesture, _ in
|
||||
gesture?.cancel()
|
||||
|
@ -366,7 +366,7 @@ final class ThemePreviewControllerNode: ASDisplayNode, ASScrollViewDelegate {
|
||||
private func updateChatsLayout(layout: ContainerViewLayout, topInset: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
var items: [ChatListItem] = []
|
||||
|
||||
let interaction = ChatListNodeInteraction(context: self.context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
let interaction = ChatListNodeInteraction(context: self.context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
}, messageSelected: { _, _, _, _ in}, groupSelected: { _ in }, addContact: { _ in }, setPeerIdWithRevealedOptions: { _, _ in }, setItemPinned: { _, _ in }, setPeerMuted: { _, _ in }, setPeerThreadMuted: { _, _, _ in }, deletePeer: { _, _ in }, deletePeerThread: { _, _ in }, setPeerThreadStopped: { _, _, _ in }, setPeerThreadPinned: { _, _, _ in }, setPeerThreadHidden: { _, _, _ in }, updatePeerGrouping: { _, _ in }, togglePeerMarkedUnread: { _, _ in}, toggleArchivedFolderHiddenByDefault: {}, toggleThreadsSelection: { _, _ in }, hidePsa: { _ in
|
||||
}, activateChatPreview: { _, _, _, gesture, _ in
|
||||
gesture?.cancel()
|
||||
|
@ -585,7 +585,7 @@ public final class ChatInlineSearchResultsListComponent: Component {
|
||||
animationRenderer: component.context.animationRenderer,
|
||||
activateSearch: {
|
||||
},
|
||||
peerSelected: { _, _, _, _ in
|
||||
peerSelected: { _, _, _, _, _ in
|
||||
},
|
||||
disabledPeerSelected: { _, _, _ in
|
||||
},
|
||||
|
@ -253,7 +253,8 @@ final class GiftOptionsScreenComponent: Component {
|
||||
transition.setAlpha(view: topSeparator, alpha: topPanelAlpha)
|
||||
}
|
||||
|
||||
let topInset: CGFloat = environment.navigationHeight - 56.0
|
||||
let topInset: CGFloat = 0.0
|
||||
let headerTopInset: CGFloat = environment.navigationHeight - 56.0
|
||||
|
||||
let premiumTitleInitialPosition = (topInset + 160.0)
|
||||
let premiumTitleOffsetDelta = premiumTitleInitialPosition - (environment.statusBarHeight + (environment.navigationHeight - environment.statusBarHeight) / 2.0)
|
||||
@ -278,7 +279,11 @@ final class GiftOptionsScreenComponent: Component {
|
||||
}
|
||||
let starsTitleScale = 1.0 - starsTitleFraction * 0.36
|
||||
if let starsTitleView = self.starsTitle.view {
|
||||
transition.setPosition(view: starsTitleView, position: CGPoint(x: availableWidth / 2.0, y: max(topInset + 455.0 - starsTitleOffset, environment.statusBarHeight + (environment.navigationHeight - environment.statusBarHeight) / 2.0)))
|
||||
var starsTitlePosition: CGFloat = 455.0
|
||||
if let descriptionPosition = self.starsDescription.view?.frame.minY {
|
||||
starsTitlePosition = descriptionPosition - 28.0
|
||||
}
|
||||
transition.setPosition(view: starsTitleView, position: CGPoint(x: availableWidth / 2.0, y: max(topInset + starsTitlePosition - starsTitleOffset, environment.statusBarHeight + (environment.navigationHeight - environment.statusBarHeight) / 2.0)))
|
||||
transition.setScale(view: starsTitleView, scale: starsTitleScale)
|
||||
}
|
||||
|
||||
@ -288,7 +293,7 @@ final class GiftOptionsScreenComponent: Component {
|
||||
}
|
||||
|
||||
if let headerView = self.header.view {
|
||||
transition.setPosition(view: headerView, position: CGPoint(x: availableWidth / 2.0, y: topInset + headerView.bounds.height / 2.0 - 30.0 - premiumTitleOffset * premiumTitleScale))
|
||||
transition.setPosition(view: headerView, position: CGPoint(x: availableWidth / 2.0, y: headerTopInset + headerView.bounds.height / 2.0 - 30.0 - premiumTitleOffset * premiumTitleScale))
|
||||
transition.setScale(view: headerView, scale: premiumTitleScale)
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,7 @@ public final class LoadingOverlayNode: ASDisplayNode {
|
||||
let peer1: EnginePeer = .user(TelegramUser(id: EnginePeer.Id(namespace: Namespaces.Peer.CloudUser, id: EnginePeer.Id.Id._internalFromInt64Value(0)), accessHash: nil, firstName: "FirstName", lastName: nil, username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: [], emojiStatus: nil, usernames: [], storiesHidden: nil, nameColor: nil, backgroundEmojiId: nil, profileColor: nil, profileBackgroundEmojiId: nil, subscriberCount: nil))
|
||||
let timestamp1: Int32 = 100000
|
||||
let peers: [EnginePeer.Id: EnginePeer] = [:]
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: context.animationCache, animationRenderer: context.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: context.animationCache, animationRenderer: context.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
}, messageSelected: { _, _, _, _ in}, groupSelected: { _ in }, addContact: { _ in }, setPeerIdWithRevealedOptions: { _, _ in }, setItemPinned: { _, _ in }, setPeerMuted: { _, _ in }, setPeerThreadMuted: { _, _, _ in }, deletePeer: { _, _ in }, deletePeerThread: { _, _ in }, setPeerThreadStopped: { _, _, _ in }, setPeerThreadPinned: { _, _, _ in }, setPeerThreadHidden: { _, _, _ in }, updatePeerGrouping: { _, _ in }, togglePeerMarkedUnread: { _, _ in}, toggleArchivedFolderHiddenByDefault: {}, toggleThreadsSelection: { _, _ in }, hidePsa: { _ in }, activateChatPreview: { _, _, _, gesture, _ in
|
||||
gesture?.cancel()
|
||||
}, present: { _ in }, openForumThread: { _, _ in }, openStorageManagement: {}, openPasswordSetup: {}, openPremiumIntro: {}, openPremiumGift: { _, _ in }, openPremiumManagement: {}, openActiveSessions: {}, openBirthdaySetup: {}, performActiveSessionAction: { _, _ in }, openChatFolderUpdates: {}, hideChatFolderUpdates: {}, openStories: { _, _ in }, openStarsTopup: { _ in
|
||||
@ -452,7 +452,7 @@ private final class PeerInfoScreenPersonalChannelItemNode: PeerInfoScreenItemNod
|
||||
animationRenderer: item.context.animationRenderer,
|
||||
activateSearch: {
|
||||
},
|
||||
peerSelected: { _, _, _, _ in
|
||||
peerSelected: { _, _, _, _, _ in
|
||||
},
|
||||
disabledPeerSelected: { _, _, _ in
|
||||
},
|
||||
|
@ -1200,7 +1200,7 @@ public final class PeerInfoVisualMediaPaneNode: ASDisplayNode, PeerInfoPaneNode,
|
||||
chatControllerInteraction.toggleMessagesSelection(messageId, selected)
|
||||
},
|
||||
openUrl: { url, concealed, external, message in
|
||||
chatControllerInteraction.openUrl(ChatControllerInteraction.OpenUrl(url: url, concealed: concealed, external: external, message: message))
|
||||
chatControllerInteraction.openUrl(ChatControllerInteraction.OpenUrl(url: url, concealed: concealed, external: external, message: message, progress: Promise()))
|
||||
},
|
||||
openInstantPage: { message, data in
|
||||
chatControllerInteraction.openInstantPage(message, data)
|
||||
|
@ -130,7 +130,7 @@ final class GreetingMessageListItemComponent: Component {
|
||||
animationRenderer: component.context.animationRenderer,
|
||||
activateSearch: {
|
||||
},
|
||||
peerSelected: { _, _, _, _ in
|
||||
peerSelected: { _, _, _, _, _ in
|
||||
},
|
||||
disabledPeerSelected: { _, _, _ in
|
||||
},
|
||||
|
@ -119,7 +119,7 @@ final class QuickReplySetupScreenComponent: Component {
|
||||
animationRenderer: listNode.context.animationRenderer,
|
||||
activateSearch: {
|
||||
},
|
||||
peerSelected: { [weak listNode] _, _, _, _ in
|
||||
peerSelected: { [weak listNode] _, _, _, _, _ in
|
||||
guard let listNode, let parentView = listNode.parentView else {
|
||||
return
|
||||
}
|
||||
|
@ -860,7 +860,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, ASScrollViewDelegate
|
||||
private func updateChatsLayout(layout: ContainerViewLayout, topInset: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
var items: [ChatListItem] = []
|
||||
|
||||
let interaction = ChatListNodeInteraction(context: self.context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
let interaction = ChatListNodeInteraction(context: self.context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {}, peerSelected: { _, _, _, _, _ in }, disabledPeerSelected: { _, _, _ in }, togglePeerSelected: { _, _ in }, togglePeersSelection: { _, _ in }, additionalCategorySelected: { _ in
|
||||
}, messageSelected: { _, _, _, _ in}, groupSelected: { _ in }, addContact: { _ in }, setPeerIdWithRevealedOptions: { _, _ in }, setItemPinned: { _, _ in }, setPeerMuted: { _, _ in }, setPeerThreadMuted: { _, _, _ in }, deletePeer: { _, _ in }, deletePeerThread: { _, _ in }, setPeerThreadStopped: { _, _, _ in }, setPeerThreadPinned: { _, _, _ in }, setPeerThreadHidden: { _, _, _ in }, updatePeerGrouping: { _, _ in }, togglePeerMarkedUnread: { _, _ in}, toggleArchivedFolderHiddenByDefault: {}, toggleThreadsSelection: { _, _ in }, hidePsa: { _ in
|
||||
}, activateChatPreview: { _, _, _, gesture, _ in
|
||||
gesture?.cancel()
|
||||
|
@ -227,7 +227,7 @@ class ChatSearchResultsControllerNode: ViewControllerTracingNode, ASScrollViewDe
|
||||
}
|
||||
|
||||
let interaction = ChatListNodeInteraction(context: context, animationCache: self.animationCache, animationRenderer: self.animationRenderer, activateSearch: {
|
||||
}, peerSelected: { _, _, _, _ in
|
||||
}, peerSelected: { _, _, _, _, _ in
|
||||
}, disabledPeerSelected: { _, _, _ in
|
||||
}, togglePeerSelected: { _, _ in
|
||||
}, togglePeersSelection: { _, _ in
|
||||
|
@ -98,7 +98,7 @@ private struct CommandChatInputContextPanelEntry: Comparable, Identifiable {
|
||||
animationRenderer: context.animationRenderer,
|
||||
activateSearch: {
|
||||
},
|
||||
peerSelected: { _, _, _, _ in
|
||||
peerSelected: { _, _, _, _, _ in
|
||||
commandSelected(.shortcut(shortcut), true)
|
||||
},
|
||||
disabledPeerSelected: { _, _, _ in
|
||||
|
Loading…
x
Reference in New Issue
Block a user