[WIP] Stories

This commit is contained in:
Ali
2023-06-16 22:42:48 +03:00
parent 0882817bed
commit b64aa1445c
59 changed files with 1601 additions and 365 deletions

View File

@@ -100,7 +100,7 @@ public final class ChatListNodeInteraction {
let openPremiumIntro: () -> Void
let openChatFolderUpdates: () -> Void
let hideChatFolderUpdates: () -> Void
let openStories: (EnginePeer.Id) -> Void
let openStories: (EnginePeer.Id, ASDisplayNode?) -> Void
public var searchTextHighightState: String?
var highlightedChatLocation: ChatListHighlightedLocation?
@@ -148,7 +148,7 @@ public final class ChatListNodeInteraction {
openPremiumIntro: @escaping () -> Void,
openChatFolderUpdates: @escaping () -> Void,
hideChatFolderUpdates: @escaping () -> Void,
openStories: @escaping (EnginePeer.Id) -> Void
openStories: @escaping (EnginePeer.Id, ASDisplayNode?) -> Void
) {
self.activateSearch = activateSearch
self.peerSelected = peerSelected
@@ -241,7 +241,7 @@ public struct ChatListNodeState: Equatable {
public var foundPeers: [(EnginePeer, EnginePeer?)]
public var selectedPeerMap: [EnginePeer.Id: EnginePeer]
public var selectedThreadIds: Set<Int64>
public var peersWithNewStories: Set<EnginePeer.Id>
public var peerStoryMapping: [EnginePeer.Id: Bool]
public init(
presentationData: ChatListPresentationData,
@@ -257,7 +257,7 @@ public struct ChatListNodeState: Equatable {
hiddenItemShouldBeTemporaryRevealed: Bool,
hiddenPsaPeerId: EnginePeer.Id?,
selectedThreadIds: Set<Int64>,
peersWithNewStories: Set<EnginePeer.Id>
peerStoryMapping: [EnginePeer.Id: Bool]
) {
self.presentationData = presentationData
self.editing = editing
@@ -272,7 +272,7 @@ public struct ChatListNodeState: Equatable {
self.hiddenItemShouldBeTemporaryRevealed = hiddenItemShouldBeTemporaryRevealed
self.hiddenPsaPeerId = hiddenPsaPeerId
self.selectedThreadIds = selectedThreadIds
self.peersWithNewStories = peersWithNewStories
self.peerStoryMapping = peerStoryMapping
}
public static func ==(lhs: ChatListNodeState, rhs: ChatListNodeState) -> Bool {
@@ -315,7 +315,7 @@ public struct ChatListNodeState: Equatable {
if lhs.selectedThreadIds != rhs.selectedThreadIds {
return false
}
if lhs.peersWithNewStories != rhs.peersWithNewStories {
if lhs.peerStoryMapping != rhs.peerStoryMapping {
return false
}
return true
@@ -396,7 +396,7 @@ private func mappedInsertEntries(context: AccountContext, nodeInteraction: ChatL
forumTopicData: forumTopicData,
topForumTopicItems: topForumTopicItems,
autoremoveTimeout: peerEntry.autoremoveTimeout,
hasNewStories: peerEntry.hasNewStories
storyState: peerEntry.storyState
)),
editing: editing,
hasActiveRevealControls: hasActiveRevealControls,
@@ -742,7 +742,7 @@ private func mappedUpdateEntries(context: AccountContext, nodeInteraction: ChatL
forumTopicData: forumTopicData,
topForumTopicItems: topForumTopicItems,
autoremoveTimeout: peerEntry.autoremoveTimeout,
hasNewStories: peerEntry.hasNewStories
storyState: peerEntry.storyState
)),
editing: editing,
hasActiveRevealControls: hasActiveRevealControls,
@@ -1086,7 +1086,7 @@ public final class ChatListNode: ListView {
public var toggleArchivedFolderHiddenByDefault: (() -> Void)?
public var hidePsa: ((EnginePeer.Id) -> Void)?
public var activateChatPreview: ((ChatListItem, Int64?, ASDisplayNode, ContextGesture?, CGPoint?) -> Void)?
public var openStories: ((EnginePeer.Id) -> Void)?
public var openStories: ((EnginePeer.Id, ASDisplayNode?) -> Void)?
private var theme: PresentationTheme
@@ -1210,7 +1210,7 @@ public final class ChatListNode: ListView {
isSelecting = true
}
self.currentState = ChatListNodeState(presentationData: ChatListPresentationData(theme: theme, fontSize: fontSize, strings: strings, dateTimeFormat: dateTimeFormat, nameSortOrder: nameSortOrder, nameDisplayOrder: nameDisplayOrder, disableAnimations: disableAnimations), editing: isSelecting, peerIdWithRevealedOptions: nil, selectedPeerIds: Set(), foundPeers: [], selectedPeerMap: [:], selectedAdditionalCategoryIds: Set(), peerInputActivities: nil, pendingRemovalItemIds: Set(), pendingClearHistoryPeerIds: Set(), hiddenItemShouldBeTemporaryRevealed: false, hiddenPsaPeerId: nil, selectedThreadIds: Set(), peersWithNewStories: Set())
self.currentState = ChatListNodeState(presentationData: ChatListPresentationData(theme: theme, fontSize: fontSize, strings: strings, dateTimeFormat: dateTimeFormat, nameSortOrder: nameSortOrder, nameDisplayOrder: nameDisplayOrder, disableAnimations: disableAnimations), editing: isSelecting, peerIdWithRevealedOptions: nil, selectedPeerIds: Set(), foundPeers: [], selectedPeerMap: [:], selectedAdditionalCategoryIds: Set(), peerInputActivities: nil, pendingRemovalItemIds: Set(), pendingClearHistoryPeerIds: Set(), hiddenItemShouldBeTemporaryRevealed: false, hiddenPsaPeerId: nil, selectedThreadIds: Set(), peerStoryMapping: [:])
self.statePromise = ValuePromise(self.currentState, ignoreRepeated: true)
self.theme = theme
@@ -1549,11 +1549,11 @@ public final class ChatListNode: ListView {
let _ = self.context.engine.peers.hideChatFolderUpdates(folderId: localFilterId).start()
}
})
}, openStories: { [weak self] peerId in
}, openStories: { [weak self] peerId, itemNode in
guard let self else {
return
}
self.openStories?(peerId)
self.openStories?(peerId, itemNode)
})
nodeInteraction.isInlineMode = isInlineMode