Always request folder updates after restart

This commit is contained in:
Ali 2023-03-30 16:50:32 +04:00
parent 0912b07b8f
commit 3076a576dd

View File

@ -448,24 +448,37 @@ public final class ChatFolderUpdates: Equatable {
} }
} }
private struct FirstTimeFolderUpdatesKey: Hashable {
var accountId: AccountRecordId
var folderId: Int32
}
private var firstTimeFolderUpdates = Set<FirstTimeFolderUpdatesKey>()
func _internal_pollChatFolderUpdatesOnce(account: Account, folderId: Int32) -> Signal<Never, NoError> { func _internal_pollChatFolderUpdatesOnce(account: Account, folderId: Int32) -> Signal<Never, NoError> {
return account.postbox.transaction { transaction -> ChatListFiltersState in return account.postbox.transaction { transaction -> ChatListFiltersState in
return _internal_currentChatListFiltersState(transaction: transaction) return _internal_currentChatListFiltersState(transaction: transaction)
} }
|> mapToSignal { state -> Signal<Never, NoError> in |> mapToSignal { state -> Signal<Never, NoError> in
let timestamp = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) let timestamp = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970)
let key = FirstTimeFolderUpdatesKey(accountId: account.id, folderId: folderId)
if firstTimeFolderUpdates.contains(key) {
if let current = state.updates.first(where: { $0.folderId == folderId }) { if let current = state.updates.first(where: { $0.folderId == folderId }) {
let updateInterval: Int32 let updateInterval: Int32
#if DEBUG #if DEBUG
updateInterval = 5 updateInterval = 5
#else #else
updateInterval = 60 * 60 updateInterval = 60 * 60
#endif #endif
if current.timestamp + updateInterval >= timestamp { if current.timestamp + updateInterval >= timestamp {
return .complete() return .complete()
} }
} }
} else {
firstTimeFolderUpdates.insert(key)
}
return account.network.request(Api.functions.communities.getCommunityUpdates(community: .inputCommunityDialogFilter(filterId: folderId))) return account.network.request(Api.functions.communities.getCommunityUpdates(community: .inputCommunityDialogFilter(filterId: folderId)))
|> map(Optional.init) |> map(Optional.init)