mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Refactoring
This commit is contained in:
@@ -64,6 +64,37 @@ public final class EngineDataMap<Item: TelegramEngineDataItem & TelegramEngineMa
|
||||
}
|
||||
}
|
||||
|
||||
public final class EngineDataList<Item: TelegramEngineDataItem & TelegramEngineMapKeyDataItem>: TelegramEngineDataItem, AnyPostboxViewDataItem {
|
||||
public typealias Result = [Item.Result]
|
||||
|
||||
private let items: [Item]
|
||||
|
||||
public init(_ items: [Item]) {
|
||||
self.items = items
|
||||
}
|
||||
|
||||
var keys: [PostboxViewKey] {
|
||||
var keys = Set<PostboxViewKey>()
|
||||
for item in self.items {
|
||||
for key in (item as! AnyPostboxViewDataItem).keys {
|
||||
keys.insert(key)
|
||||
}
|
||||
}
|
||||
return Array(keys)
|
||||
}
|
||||
|
||||
func _extract(views: [PostboxViewKey: PostboxView]) -> Any {
|
||||
var result: [Item.Result] = []
|
||||
|
||||
for item in self.items {
|
||||
let itemResult = (item as! AnyPostboxViewDataItem)._extract(views: views)
|
||||
result.append(itemResult as! Item.Result)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
public extension TelegramEngine {
|
||||
final class EngineData {
|
||||
public struct Item {
|
||||
|
||||
Reference in New Issue
Block a user