mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Refactoring
This commit is contained in:
@@ -365,10 +365,10 @@ public final class SettingsSearchContainerNode: SearchDisplayControllerContentNo
|
||||
self.addSubnode(self.listNode)
|
||||
|
||||
let interaction = SettingsSearchInteraction(openItem: { result in
|
||||
addRecentSettingsSearchItem(postbox: context.account.postbox, item: result.id)
|
||||
addRecentSettingsSearchItem(engine: context.engine, item: result.id)
|
||||
openResult(result)
|
||||
}, deleteRecentItem: { id in
|
||||
removeRecentSettingsSearchItem(postbox: context.account.postbox, item: id)
|
||||
removeRecentSettingsSearchItem(engine: context.engine, item: id)
|
||||
})
|
||||
|
||||
let searchableItems = Promise<[SettingsSearchableItem]>()
|
||||
@@ -449,7 +449,7 @@ public final class SettingsSearchContainerNode: SearchDisplayControllerContentNo
|
||||
|> deliverOnMainQueue).start(next: { [weak self] recentSearchItems, faqItems, presentationData in
|
||||
if let strongSelf = self {
|
||||
let recentHeader = ChatListSearchItemHeader(type: .recentPeers, theme: presentationData.theme, strings: presentationData.strings, actionTitle: presentationData.strings.WebSearch_RecentSectionClear, action: {
|
||||
clearRecentSettingsSearchItems(postbox: context.account.postbox)
|
||||
clearRecentSettingsSearchItems(engine: context.engine)
|
||||
})
|
||||
let faqHeader = ChatListSearchItemHeader(type: .faq, theme: presentationData.theme, strings: presentationData.strings)
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
import Postbox
|
||||
import TelegramCore
|
||||
import SwiftSignalKit
|
||||
import TelegramUIPreferences
|
||||
|
||||
@@ -37,42 +38,32 @@ public final class RecentSettingsSearchQueryItem: Codable {
|
||||
}
|
||||
}
|
||||
|
||||
func addRecentSettingsSearchItem(postbox: Postbox, item: SettingsSearchableItemId) {
|
||||
let _ = (postbox.transaction { transaction in
|
||||
let itemId = SettingsSearchRecentQueryItemId(item.index)
|
||||
if let entry = CodableEntry(RecentSettingsSearchQueryItem()) {
|
||||
transaction.addOrMoveToFirstPositionOrderedItemListItem(collectionId: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems, item: OrderedItemListEntry(id: itemId.rawValue, contents: entry), removeTailIfCountExceeds: 100)
|
||||
}
|
||||
}).start()
|
||||
func addRecentSettingsSearchItem(engine: TelegramEngine, item: SettingsSearchableItemId) {
|
||||
let itemId = SettingsSearchRecentQueryItemId(item.index)
|
||||
let _ = engine.orderedLists.addOrMoveToFirstPosition(collectionId: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems, id: itemId.rawValue, item: RecentSettingsSearchQueryItem(), removeTailIfCountExceeds: 100).start()
|
||||
}
|
||||
|
||||
func removeRecentSettingsSearchItem(postbox: Postbox, item: SettingsSearchableItemId) {
|
||||
let _ = (postbox.transaction { transaction -> Void in
|
||||
let itemId = SettingsSearchRecentQueryItemId(item.index)
|
||||
transaction.removeOrderedItemListItem(collectionId: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems, itemId: itemId.rawValue)
|
||||
}).start()
|
||||
func removeRecentSettingsSearchItem(engine: TelegramEngine, item: SettingsSearchableItemId) {
|
||||
let itemId = SettingsSearchRecentQueryItemId(item.index)
|
||||
let _ = engine.orderedLists.removeItem(collectionId: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems, id: itemId.rawValue).start()
|
||||
}
|
||||
|
||||
func clearRecentSettingsSearchItems(postbox: Postbox) {
|
||||
let _ = (postbox.transaction { transaction -> Void in
|
||||
transaction.replaceOrderedItemListItems(collectionId: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems, items: [])
|
||||
}).start()
|
||||
func clearRecentSettingsSearchItems(engine: TelegramEngine) {
|
||||
let _ = engine.orderedLists.clear(collectionId: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems).start()
|
||||
}
|
||||
|
||||
func settingsSearchRecentItems(postbox: Postbox) -> Signal<[SettingsSearchableItemId], NoError> {
|
||||
return postbox.combinedView(keys: [.orderedItemList(id: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems)])
|
||||
|> mapToSignal { view -> Signal<[SettingsSearchableItemId], NoError> in
|
||||
return postbox.transaction { transaction -> [SettingsSearchableItemId] in
|
||||
var result: [SettingsSearchableItemId] = []
|
||||
if let view = view.views[.orderedItemList(id: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems)] as? OrderedItemListView {
|
||||
for item in view.items {
|
||||
let index = SettingsSearchRecentQueryItemId(item.id).value
|
||||
if let itemId = SettingsSearchableItemId(index: index) {
|
||||
result.append(itemId)
|
||||
}
|
||||
|> map { view -> [SettingsSearchableItemId] in
|
||||
var result: [SettingsSearchableItemId] = []
|
||||
if let view = view.views[.orderedItemList(id: ApplicationSpecificOrderedItemListCollectionId.settingsSearchRecentItems)] as? OrderedItemListView {
|
||||
for item in view.items {
|
||||
let index = SettingsSearchRecentQueryItemId(item.id).value
|
||||
if let itemId = SettingsSearchableItemId(index: index) {
|
||||
result.append(itemId)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user