Merge commit '7621e2f8dec938cf48181c8b10afc9b01f444e68' into beta

This commit is contained in:
Ilya Laktyushin
2025-12-06 02:17:48 +04:00
commit 8344b97e03
28070 changed files with 7995182 additions and 0 deletions
@@ -0,0 +1,63 @@
import Foundation
public struct StoryExpirationTimeEntry: Equatable {
public var id: StoryId
public var expirationTimestamp: Int32
init(id: StoryId, expirationTimestamp: Int32) {
self.id = id
self.expirationTimestamp = expirationTimestamp
}
}
final class MutableStoryExpirationTimeItemsView: MutablePostboxView {
var topEntry: StoryExpirationTimeEntry?
init(postbox: PostboxImpl) {
let _ = self.refreshDueToExternalTransaction(postbox: postbox)
}
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
var updated = false
if !transaction.storyItemsEvents.isEmpty {
var refresh = false
loop: for event in transaction.storyItemsEvents {
switch event {
case .replace:
refresh = true
break loop
}
}
if refresh {
updated = self.refreshDueToExternalTransaction(postbox: postbox)
}
}
return updated
}
func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool {
var topEntry: StoryExpirationTimeEntry?
if let item = postbox.storyItemsTable.getMinExpirationTimestamp() {
topEntry = StoryExpirationTimeEntry(id: item.0, expirationTimestamp: item.1)
}
if self.topEntry != topEntry {
self.topEntry = topEntry
return true
} else {
return false
}
}
func immutableView() -> PostboxView {
return StoryExpirationTimeItemsView(self)
}
}
public final class StoryExpirationTimeItemsView: PostboxView {
public let topEntry: StoryExpirationTimeEntry?
init(_ view: MutableStoryExpirationTimeItemsView) {
self.topEntry = view.topEntry
}
}