Files
GLEGram-iOS/submodules/Postbox/Sources/ItemCollectionIdsView.swift
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

71 lines
2.5 KiB
Swift

import Foundation
final class MutableItemCollectionIdsView: MutablePostboxView {
let namespaces: [ItemCollectionId.Namespace]
var idsByNamespace: [ItemCollectionId.Namespace: Set<ItemCollectionId>]
init(postbox: PostboxImpl, namespaces: [ItemCollectionId.Namespace]) {
self.namespaces = namespaces
var idsByNamespace: [ItemCollectionId.Namespace: Set<ItemCollectionId>] = [:]
for namespace in namespaces {
let ids = postbox.itemCollectionInfoTable.getIds(namespace: namespace)
idsByNamespace[namespace] = Set(ids)
}
self.idsByNamespace = idsByNamespace
}
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
if transaction.currentItemCollectionInfosOperations.isEmpty {
return false
}
var updated = false
var reloadInfosNamespaces = Set<ItemCollectionId.Namespace>()
for operation in transaction.currentItemCollectionInfosOperations {
switch operation {
case let .replaceInfos(namespace):
reloadInfosNamespaces.insert(namespace)
}
}
if !reloadInfosNamespaces.isEmpty {
for namespace in self.namespaces {
if reloadInfosNamespaces.contains(namespace) {
updated = true
let ids = postbox.itemCollectionInfoTable.getIds(namespace: namespace)
self.idsByNamespace[namespace] = Set(ids)
}
}
}
return updated
}
func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool {
/*var idsByNamespace: [ItemCollectionId.Namespace: Set<ItemCollectionId>] = [:]
for namespace in namespaces {
let ids = postbox.itemCollectionInfoTable.getIds(namespace: namespace)
idsByNamespace[namespace] = Set(ids)
}
if self.idsByNamespace != idsByNamespace {
self.idsByNamespace = idsByNamespace
return true
} else {
return false
}*/
return false
}
func immutableView() -> PostboxView {
return ItemCollectionIdsView(self)
}
}
public final class ItemCollectionIdsView: PostboxView {
public let idsByNamespace: [ItemCollectionId.Namespace: Set<ItemCollectionId>]
init(_ view: MutableItemCollectionIdsView) {
self.idsByNamespace = view.idsByNamespace
}
}