diff --git a/submodules/TelegramCore/Sources/Account.swift b/submodules/TelegramCore/Sources/Account.swift index 11fccf62f9..73786ebc8e 100644 --- a/submodules/TelegramCore/Sources/Account.swift +++ b/submodules/TelegramCore/Sources/Account.swift @@ -1202,12 +1202,12 @@ public class Account { } } - public func allPeerInputActivities() -> Signal<[PeerActivitySpace: [PeerId: PeerInputActivity]], NoError> { + public func allPeerInputActivities() -> Signal<[PeerActivitySpace: [(PeerId, PeerInputActivity)]], NoError> { return self.peerInputActivityManager.allActivities() |> map { activities in - var result: [PeerActivitySpace: [PeerId: PeerInputActivity]] = [:] + var result: [PeerActivitySpace: [(PeerId, PeerInputActivity)]] = [:] for (chatPeerId, chatActivities) in activities { - result[chatPeerId] = chatActivities.mapValues({ $0.activity }) + result[chatPeerId] = chatActivities.map { ($0.0, $0.1.activity) } } return result } diff --git a/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift b/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift index c8a02783c8..95b5eea8cf 100644 --- a/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift +++ b/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift @@ -30,13 +30,13 @@ struct PeerInputActivityRecord: Equatable { private final class ManagedLocalTypingActivitiesContext { private var disposables: [PeerActivitySpace: (PeerInputActivityRecord, MetaDisposable)] = [:] - func update(activities: [PeerActivitySpace: [PeerId: PeerInputActivityRecord]]) -> (start: [(PeerActivitySpace, PeerInputActivityRecord?, MetaDisposable)], dispose: [MetaDisposable]) { + func update(activities: [PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]]) -> (start: [(PeerActivitySpace, PeerInputActivityRecord?, MetaDisposable)], dispose: [MetaDisposable]) { var start: [(PeerActivitySpace, PeerInputActivityRecord?, MetaDisposable)] = [] var dispose: [MetaDisposable] = [] var validPeerIds = Set() for (peerId, record) in activities { - if let activity = record.values.first { + if let activity = record.first?.1 { validPeerIds.insert(peerId) let currentRecord = self.disposables[peerId] @@ -76,7 +76,7 @@ private final class ManagedLocalTypingActivitiesContext { } } -func managedLocalTypingActivities(activities: Signal<[PeerActivitySpace: [PeerId: PeerInputActivityRecord]], NoError>, postbox: Postbox, network: Network, accountPeerId: PeerId) -> Signal { +func managedLocalTypingActivities(activities: Signal<[PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]], NoError>, postbox: Postbox, network: Network, accountPeerId: PeerId) -> Signal { return Signal { subscriber in let context = Atomic(value: ManagedLocalTypingActivitiesContext()) let disposable = activities.start(next: { activities in diff --git a/submodules/TelegramCore/Sources/PeerInputActivityManager.swift b/submodules/TelegramCore/Sources/PeerInputActivityManager.swift index 39227e30cc..f7fa72537c 100644 --- a/submodules/TelegramCore/Sources/PeerInputActivityManager.swift +++ b/submodules/TelegramCore/Sources/PeerInputActivityManager.swift @@ -178,9 +178,9 @@ private final class PeerInputActivityContext { } private final class PeerGlobalInputActivityContext { - private let subscribers = Bag<([PeerActivitySpace: [PeerId: PeerInputActivityRecord]]) -> Void>() + private let subscribers = Bag<([PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]]) -> Void>() - func addSubscriber(_ subscriber: @escaping ([PeerActivitySpace: [PeerId: PeerInputActivityRecord]]) -> Void) -> Int { + func addSubscriber(_ subscriber: @escaping ([PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]]) -> Void) -> Int { return self.subscribers.add(subscriber) } @@ -192,7 +192,7 @@ private final class PeerGlobalInputActivityContext { return self.subscribers.isEmpty } - func notify(_ activities: [PeerActivitySpace: [PeerId: PeerInputActivityRecord]]) { + func notify(_ activities: [PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]]) { for subscriber in self.subscribers.copyItems() { subscriber(activities) } @@ -256,21 +256,17 @@ final class PeerInputActivityManager { } } - private func collectActivities() -> [PeerActivitySpace: [PeerId: PeerInputActivityRecord]] { + private func collectActivities() -> [PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]] { assert(self.queue.isCurrent()) - var dict: [PeerActivitySpace: [PeerId: PeerInputActivityRecord]] = [:] + var dict: [PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]] = [:] for (chatPeerId, context) in self.contexts { - var chatDict: [PeerId: PeerInputActivityRecord] = [:] - for (peerId, activity) in context.topActivities() { - chatDict[peerId] = activity - } - dict[chatPeerId] = chatDict + dict[chatPeerId] = context.topActivities() } return dict } - func allActivities() -> Signal<[PeerActivitySpace: [PeerId: PeerInputActivityRecord]], NoError> { + func allActivities() -> Signal<[PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]], NoError> { let queue = self.queue return Signal { [weak self] subscriber in let disposable = MetaDisposable()