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> {
return account.postbox.transaction { transaction -> ChatListFiltersState in
return _internal_currentChatListFiltersState(transaction: transaction)
}
|> mapToSignal { state -> Signal<Never, NoError> in
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 }) {
let updateInterval: Int32
#if DEBUG
#if DEBUG
updateInterval = 5
#else
#else
updateInterval = 60 * 60
#endif
#endif
if current.timestamp + updateInterval >= timestamp {
return .complete()
}
}
} else {
firstTimeFolderUpdates.insert(key)
}
return account.network.request(Api.functions.communities.getCommunityUpdates(community: .inputCommunityDialogFilter(filterId: folderId)))
|> map(Optional.init)