mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Folder improvements
This commit is contained in:
parent
c191cb8d62
commit
46ea78b6c3
@ -244,6 +244,7 @@ public func chatListFilterPresetListController(context: AccountContext, mode: Ch
|
|||||||
|
|
||||||
var dismissImpl: (() -> Void)?
|
var dismissImpl: (() -> Void)?
|
||||||
var pushControllerImpl: ((ViewController) -> Void)?
|
var pushControllerImpl: ((ViewController) -> Void)?
|
||||||
|
var presentControllerImpl: ((ViewController) -> Void)?
|
||||||
|
|
||||||
let arguments = ChatListFilterPresetListControllerArguments(context: context,
|
let arguments = ChatListFilterPresetListControllerArguments(context: context,
|
||||||
addSuggestedPresed: { title, data in
|
addSuggestedPresed: { title, data in
|
||||||
@ -268,6 +269,15 @@ public func chatListFilterPresetListController(context: AccountContext, mode: Ch
|
|||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
}, removePreset: { id in
|
}, removePreset: { id in
|
||||||
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
let actionSheet = ActionSheetController(presentationData: presentationData)
|
||||||
|
|
||||||
|
actionSheet.setItemGroups([
|
||||||
|
ActionSheetItemGroup(items: [
|
||||||
|
ActionSheetTextItem(title: presentationData.strings.ChatList_RemoveFolderConfirmation),
|
||||||
|
ActionSheetButtonItem(title: presentationData.strings.ChatList_RemoveFolderAction, color: .destructive, action: { [weak actionSheet] in
|
||||||
|
actionSheet?.dismissAnimated()
|
||||||
|
|
||||||
let _ = (updateChatListFiltersInteractively(postbox: context.account.postbox, { filters in
|
let _ = (updateChatListFiltersInteractively(postbox: context.account.postbox, { filters in
|
||||||
var filters = filters
|
var filters = filters
|
||||||
if let index = filters.firstIndex(where: { $0.id == id }) {
|
if let index = filters.firstIndex(where: { $0.id == id }) {
|
||||||
@ -275,8 +285,16 @@ public func chatListFilterPresetListController(context: AccountContext, mode: Ch
|
|||||||
}
|
}
|
||||||
return filters
|
return filters
|
||||||
})
|
})
|
||||||
|> deliverOnMainQueue).start(next: { _ in
|
|> deliverOnMainQueue).start()
|
||||||
})
|
})
|
||||||
|
]),
|
||||||
|
ActionSheetItemGroup(items: [
|
||||||
|
ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, font: .bold, action: { [weak actionSheet] in
|
||||||
|
actionSheet?.dismissAnimated()
|
||||||
|
})
|
||||||
|
])
|
||||||
|
])
|
||||||
|
presentControllerImpl?(actionSheet)
|
||||||
})
|
})
|
||||||
|
|
||||||
let chatCountCache = Atomic<[ChatListFilterData: Int]>(value: [:])
|
let chatCountCache = Atomic<[ChatListFilterData: Int]>(value: [:])
|
||||||
@ -420,6 +438,9 @@ public func chatListFilterPresetListController(context: AccountContext, mode: Ch
|
|||||||
pushControllerImpl = { [weak controller] c in
|
pushControllerImpl = { [weak controller] c in
|
||||||
controller?.push(c)
|
controller?.push(c)
|
||||||
}
|
}
|
||||||
|
presentControllerImpl = { [weak controller] c in
|
||||||
|
controller?.present(c, in: .window(.root))
|
||||||
|
}
|
||||||
dismissImpl = { [weak controller] in
|
dismissImpl = { [weak controller] in
|
||||||
controller?.dismiss()
|
controller?.dismiss()
|
||||||
}
|
}
|
||||||
|
@ -298,6 +298,9 @@ final class MutableChatListView {
|
|||||||
fileprivate var state: ChatListViewState
|
fileprivate var state: ChatListViewState
|
||||||
fileprivate var sampledState: ChatListViewSample
|
fileprivate var sampledState: ChatListViewSample
|
||||||
|
|
||||||
|
private var additionalItemIds = Set<PeerId>()
|
||||||
|
fileprivate var additionalItemEntries: [MutableChatListEntry] = []
|
||||||
|
|
||||||
init(postbox: Postbox, groupId: PeerGroupId, filterPredicate: ChatListFilterPredicate?, aroundIndex: ChatListIndex, count: Int, summaryComponents: ChatListEntrySummaryComponents) {
|
init(postbox: Postbox, groupId: PeerGroupId, filterPredicate: ChatListFilterPredicate?, aroundIndex: ChatListIndex, count: Int, summaryComponents: ChatListEntrySummaryComponents) {
|
||||||
self.groupId = groupId
|
self.groupId = groupId
|
||||||
self.filterPredicate = filterPredicate
|
self.filterPredicate = filterPredicate
|
||||||
@ -325,17 +328,16 @@ final class MutableChatListView {
|
|||||||
self.count = count
|
self.count = count
|
||||||
|
|
||||||
if case .root = groupId, self.filterPredicate == nil {
|
if case .root = groupId, self.filterPredicate == nil {
|
||||||
/*let itemIds = postbox.additionalChatListItemsTable.get()
|
let itemIds = postbox.additionalChatListItemsTable.get()
|
||||||
self.additionalItemIds = Set(itemIds)
|
self.additionalItemIds = Set(itemIds)
|
||||||
for peerId in itemIds {
|
for peerId in itemIds {
|
||||||
if let entry = postbox.chatListTable.getStandalone(peerId: peerId, messageHistoryTable: postbox.messageHistoryTable) {
|
if let entry = postbox.chatListTable.getStandalone(peerId: peerId, messageHistoryTable: postbox.messageHistoryTable) {
|
||||||
self.additionalItemEntries.append(MutableChatListEntry(entry, cachedDataTable: postbox.cachedPeerDataTable, readStateTable: postbox.readStateTable, messageHistoryTable: postbox.messageHistoryTable))
|
self.additionalItemEntries.append(MutableChatListEntry(entry, cachedDataTable: postbox.cachedPeerDataTable, readStateTable: postbox.readStateTable, messageHistoryTable: postbox.messageHistoryTable))
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
self.groupEntries = []
|
self.groupEntries = []
|
||||||
self.reloadGroups(postbox: postbox)
|
self.reloadGroups(postbox: postbox)
|
||||||
} else {
|
} else {
|
||||||
//self.additionalItemIds = Set()
|
|
||||||
self.groupEntries = []
|
self.groupEntries = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -477,9 +479,6 @@ final class MutableChatListView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
|
|
||||||
var updateAdditionalItems = false
|
var updateAdditionalItems = false
|
||||||
if let itemIds = transaction.replacedAdditionalChatListItems {
|
if let itemIds = transaction.replacedAdditionalChatListItems {
|
||||||
self.additionalItemIds = Set(itemIds)
|
self.additionalItemIds = Set(itemIds)
|
||||||
@ -505,34 +504,6 @@ final class MutableChatListView {
|
|||||||
}
|
}
|
||||||
hasChanges = true
|
hasChanges = true
|
||||||
}
|
}
|
||||||
var updateAdditionalMixedItems = false
|
|
||||||
for peerId in self.additionalMixedItemIds.union(self.additionalMixedPinnedItemIds) {
|
|
||||||
if transaction.currentOperationsByPeerId[peerId] != nil {
|
|
||||||
updateAdditionalMixedItems = true
|
|
||||||
}
|
|
||||||
if transaction.currentUpdatedPeers[peerId] != nil {
|
|
||||||
updateAdditionalMixedItems = true
|
|
||||||
}
|
|
||||||
if transaction.currentUpdatedChatListInclusions[peerId] != nil {
|
|
||||||
updateAdditionalMixedItems = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if updateAdditionalMixedItems {
|
|
||||||
self.additionalMixedItemEntries.removeAll()
|
|
||||||
for peerId in self.additionalMixedItemIds {
|
|
||||||
if let entry = postbox.chatListTable.getEntry(peerId: peerId, messageHistoryTable: postbox.messageHistoryTable, peerChatInterfaceStateTable: postbox.peerChatInterfaceStateTable) {
|
|
||||||
self.additionalMixedItemEntries.append(MutableChatListEntry(entry, cachedDataTable: postbox.cachedPeerDataTable, readStateTable: postbox.readStateTable, messageHistoryTable: postbox.messageHistoryTable))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.additionalMixedPinnedEntries.removeAll()
|
|
||||||
for peerId in self.additionalMixedPinnedItemIds {
|
|
||||||
if let entry = postbox.chatListTable.getEntry(peerId: peerId, messageHistoryTable: postbox.messageHistoryTable, peerChatInterfaceStateTable: postbox.peerChatInterfaceStateTable) {
|
|
||||||
self.additionalMixedPinnedEntries.append(MutableChatListEntry(entry, cachedDataTable: postbox.cachedPeerDataTable, readStateTable: postbox.readStateTable, messageHistoryTable: postbox.messageHistoryTable))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hasChanges = true
|
|
||||||
}*/
|
|
||||||
return hasChanges
|
return hasChanges
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -544,7 +515,7 @@ final class MutableChatListView {
|
|||||||
return self.sampledState.hole
|
return self.sampledState.hole
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private func renderEntry(_ entry: MutableChatListEntry, postbox: Postbox, renderMessage: (IntermediateMessage) -> Message, getPeer: (PeerId) -> Peer?, getPeerNotificationSettings: (PeerId) -> PeerNotificationSettings?, getPeerPresence: (PeerId) -> PeerPresence?) -> MutableChatListEntry? {
|
private func renderEntry(_ entry: MutableChatListEntry, postbox: Postbox, renderMessage: (IntermediateMessage) -> Message, getPeer: (PeerId) -> Peer?, getPeerNotificationSettings: (PeerId) -> PeerNotificationSettings?, getPeerPresence: (PeerId) -> PeerPresence?) -> MutableChatListEntry? {
|
||||||
switch entry {
|
switch entry {
|
||||||
case let .IntermediateMessageEntry(index, messageIndex):
|
case let .IntermediateMessageEntry(index, messageIndex):
|
||||||
let renderedMessage: Message?
|
let renderedMessage: Message?
|
||||||
@ -573,48 +544,21 @@ final class MutableChatListView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagSummaryCount: Int32?
|
let tagSummaryCount: Int32? = nil
|
||||||
var actionsSummaryCount: Int32?
|
let actionsSummaryCount: Int32? = nil
|
||||||
|
|
||||||
if let tagSummary = self.summaryComponents.tagSummary {
|
return .MessageEntry(index: index, message: renderedMessage, readState: postbox.readStateTable.getCombinedState(index.messageIndex.id.peerId), notificationSettings: notificationSettings, isRemovedFromTotalUnreadCount: false, embeddedInterfaceState: postbox.peerChatInterfaceStateTable.get(index.messageIndex.id.peerId)?.chatListEmbeddedState, renderedPeer: RenderedPeer(peerId: index.messageIndex.id.peerId, peers: peers), presence: presence, tagSummaryInfo: ChatListMessageTagSummaryInfo(tagSummaryCount: tagSummaryCount, actionsSummaryCount: actionsSummaryCount), hasFailedMessages: postbox.messageHistoryFailedTable.contains(peerId: index.messageIndex.id.peerId), isContact: isContact)
|
||||||
let key = MessageHistoryTagsSummaryKey(tag: tagSummary.tag, peerId: index.messageIndex.id.peerId, namespace: tagSummary.namespace)
|
|
||||||
if let summary = postbox.messageHistoryTagsSummaryTable.get(key) {
|
|
||||||
tagSummaryCount = summary.count
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if let actionsSummary = self.summaryComponents.actionsSummary {
|
|
||||||
let key = PendingMessageActionsSummaryKey(type: actionsSummary.type, peerId: index.messageIndex.id.peerId, namespace: actionsSummary.namespace)
|
|
||||||
actionsSummaryCount = postbox.pendingMessageActionsMetadataTable.getCount(.peerNamespaceAction(key.peerId, key.namespace, key.type))
|
|
||||||
}
|
|
||||||
|
|
||||||
return .MessageEntry(index: index, message: renderedMessage, readState: postbox.readStateTable.getCombinedState(index.messageIndex.id.peerId), notificationSettings: notificationSettings, embeddedInterfaceState: postbox.peerChatInterfaceStateTable.get(index.messageIndex.id.peerId)?.chatListEmbeddedState, renderedPeer: RenderedPeer(peerId: index.messageIndex.id.peerId, peers: peers), presence: presence, tagSummaryInfo: ChatListMessageTagSummaryInfo(tagSummaryCount: tagSummaryCount, actionsSummaryCount: actionsSummaryCount), hasFailedMessages: postbox.messageHistoryFailedTable.contains(peerId: index.messageIndex.id.peerId), isContact: isContact)
|
|
||||||
default:
|
default:
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
func render(postbox: Postbox, renderMessage: (IntermediateMessage) -> Message, getPeer: (PeerId) -> Peer?, getPeerNotificationSettings: (PeerId) -> PeerNotificationSettings?, getPeerPresence: (PeerId) -> PeerPresence?) {
|
func render(postbox: Postbox, renderMessage: (IntermediateMessage) -> Message, getPeer: (PeerId) -> Peer?, getPeerNotificationSettings: (PeerId) -> PeerNotificationSettings?, getPeerPresence: (PeerId) -> PeerPresence?) {
|
||||||
/*for i in 0 ..< self.entries.count {
|
|
||||||
if let updatedEntry = self.renderEntry(self.entries[i], postbox: postbox, renderMessage: renderMessage, getPeer: getPeer, getPeerNotificationSettings: getPeerNotificationSettings, getPeerPresence: getPeerPresence) {
|
|
||||||
self.entries[i] = updatedEntry
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for i in 0 ..< self.additionalItemEntries.count {
|
for i in 0 ..< self.additionalItemEntries.count {
|
||||||
if let updatedEntry = self.renderEntry(self.additionalItemEntries[i], postbox: postbox, renderMessage: renderMessage, getPeer: getPeer, getPeerNotificationSettings: getPeerNotificationSettings, getPeerPresence: getPeerPresence) {
|
if let updatedEntry = self.renderEntry(self.additionalItemEntries[i], postbox: postbox, renderMessage: renderMessage, getPeer: getPeer, getPeerNotificationSettings: getPeerNotificationSettings, getPeerPresence: getPeerPresence) {
|
||||||
self.additionalItemEntries[i] = updatedEntry
|
self.additionalItemEntries[i] = updatedEntry
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i in 0 ..< self.additionalMixedItemEntries.count {
|
|
||||||
if let updatedEntry = self.renderEntry(self.additionalMixedItemEntries[i], postbox: postbox, renderMessage: renderMessage, getPeer: getPeer, getPeerNotificationSettings: getPeerNotificationSettings, getPeerPresence: getPeerPresence) {
|
|
||||||
self.additionalMixedItemEntries[i] = updatedEntry
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for i in 0 ..< self.additionalMixedPinnedEntries.count {
|
|
||||||
if let updatedEntry = self.renderEntry(self.additionalMixedPinnedEntries[i], postbox: postbox, renderMessage: renderMessage, getPeer: getPeer, getPeerNotificationSettings: getPeerNotificationSettings, getPeerPresence: getPeerPresence) {
|
|
||||||
self.additionalMixedPinnedEntries[i] = updatedEntry
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,16 +592,16 @@ public final class ChatListView {
|
|||||||
self.groupEntries = mutableView.groupEntries
|
self.groupEntries = mutableView.groupEntries
|
||||||
|
|
||||||
var additionalItemEntries: [ChatListEntry] = []
|
var additionalItemEntries: [ChatListEntry] = []
|
||||||
/*for entry in mutableView.additionalItemEntries {
|
for entry in mutableView.additionalItemEntries {
|
||||||
switch entry {
|
switch entry {
|
||||||
case let .MessageEntry(index, message, combinedReadState, notificationSettings, embeddedState, peer, peerPresence, summaryInfo, hasFailed, isContact):
|
case let .MessageEntry(index, message, combinedReadState, _, isExcludedFromUnreadCount, embeddedState, peer, peerPresence, summaryInfo, hasFailed, isContact):
|
||||||
additionalItemEntries.append(.MessageEntry(index, message, combinedReadState, notificationSettings, embeddedState, peer, peerPresence, summaryInfo, hasFailed, isContact))
|
additionalItemEntries.append(.MessageEntry(index: index, message: message, readState: combinedReadState, isRemovedFromTotalUnreadCount: isExcludedFromUnreadCount, embeddedInterfaceState: embeddedState, renderedPeer: peer, presence: peerPresence, summaryInfo: summaryInfo, hasFailed: hasFailed, isContact: isContact))
|
||||||
case .HoleEntry:
|
case .HoleEntry:
|
||||||
assertionFailure()
|
assertionFailure()
|
||||||
case .IntermediateMessageEntry:
|
case .IntermediateMessageEntry:
|
||||||
assertionFailure()
|
assertionFailure()
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
self.additionalItemEntries = additionalItemEntries
|
self.additionalItemEntries = additionalItemEntries
|
||||||
}
|
}
|
||||||
|
@ -161,8 +161,11 @@ final class ContactMultiselectionControllerNode: ASDisplayNode {
|
|||||||
selectionState = state
|
selectionState = state
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
case .chats:
|
case let .chats(chatsNode):
|
||||||
break
|
selectionState = ContactListNodeGroupSelectionState()
|
||||||
|
for peerId in chatsNode.currentState.selectedPeerIds {
|
||||||
|
selectionState = selectionState?.withToggledPeerId(.peer(peerId))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var searchChatList = false
|
var searchChatList = false
|
||||||
var searchGroups = false
|
var searchGroups = false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user