mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-02 00:17:02 +00:00
input activities bug fixes
This commit is contained in:
parent
8d0a7f70ed
commit
45760b8253
@ -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
|
||||
}
|
||||
|
@ -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<PeerActivitySpace>()
|
||||
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<Void, NoError> {
|
||||
func managedLocalTypingActivities(activities: Signal<[PeerActivitySpace: [(PeerId, PeerInputActivityRecord)]], NoError>, postbox: Postbox, network: Network, accountPeerId: PeerId) -> Signal<Void, NoError> {
|
||||
return Signal { subscriber in
|
||||
let context = Atomic(value: ManagedLocalTypingActivitiesContext())
|
||||
let disposable = activities.start(next: { activities in
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user