[WIP] Topics

This commit is contained in:
Ali
2022-10-04 18:19:39 +04:00
parent 533085c77a
commit 62697d4ffb
83 changed files with 1974 additions and 1650 deletions

View File

@@ -221,7 +221,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
}, openUrl: { url in
self?.openUrl(url)
}, openPeer: { peer, navigation in
self?.openPeer(peerId: peer.id, peer: peer)
self?.openPeer(peer: EnginePeer(peer))
}, callPeer: { peerId, isVideo in
self?.controllerInteraction?.callPeer(peerId, isVideo)
}, enqueueMessage: { _ in
@@ -248,9 +248,9 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
}, gallerySource: gallerySource))
}
return false
}, openPeer: { [weak self] peerId, _, message, _, peer in
if let peerId = peerId, peerId != context.account.peerId {
self?.openPeer(peerId: peerId, peer: peer)
}, openPeer: { [weak self] peer, _, message, _ in
if peer.id != context.account.peerId {
self?.openPeer(peer: peer)
}
}, openPeerMention: { [weak self] name in
self?.openPeerMention(name)
@@ -376,7 +376,12 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
items.append(ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_LinkDialogOpen, color: .accent, action: { [weak actionSheet] in
actionSheet?.dismissAnimated()
if let strongSelf = self {
strongSelf.openPeer(peerId: peerId, peer: nil)
let _ = (strongSelf.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId))
|> deliverOnMainQueue).start(next: { peer in
if let strongSelf = self, let peer = peer {
strongSelf.openPeer(peer: peer)
}
})
}
}))
if !mention.isEmpty {
@@ -762,13 +767,8 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
self.eventLogContext.setFilter(self.filter)
}
private func openPeer(peerId: PeerId, peer: Peer?, peekData: ChatPeekTimeout? = nil) {
let peerSignal: Signal<Peer?, NoError>
if let peer = peer {
peerSignal = .single(peer)
} else {
peerSignal = self.context.account.postbox.loadedPeerWithId(peerId) |> map(Optional.init)
}
private func openPeer(peer: EnginePeer, peekData: ChatPeekTimeout? = nil) {
let peerSignal: Signal<Peer?, NoError> = .single(peer._asPeer())
self.navigationActionDisposable.set((peerSignal |> take(1) |> deliverOnMainQueue).start(next: { [weak self] peer in
if let strongSelf = self, let peer = peer {
if peer is TelegramChannel, let navigationController = strongSelf.getNavigationController() {
@@ -882,9 +882,9 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
}
case .urlAuth:
break
case let .peer(peerId, _):
if let peerId = peerId {
strongSelf.openPeer(peerId: peerId, peer: nil)
case let .peer(peer, _):
if let peer = peer {
strongSelf.openPeer(peer: EnginePeer(peer))
}
case .inaccessiblePeer:
strongSelf.controllerInteraction.presentController(textAlertController(context: strongSelf.context, updatedPresentationData: strongSelf.controller?.updatedPresentationData, title: nil, text: strongSelf.presentationData.strings.Conversation_ErrorInaccessibleMessage, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), nil)
@@ -892,9 +892,9 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
break
case .groupBotStart:
break
case let .channelMessage(peerId, messageId, timecode):
case let .channelMessage(peer, messageId, timecode):
if let navigationController = strongSelf.getNavigationController() {
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(id: peerId), subject: .message(id: .id(messageId), highlight: true, timecode: timecode)))
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(id: peer.id), subject: .message(id: .id(messageId), highlight: true, timecode: timecode)))
}
case let .replyThreadMessage(replyThreadMessage, messageId):
if let navigationController = strongSelf.getNavigationController() {
@@ -931,17 +931,17 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
case let .instantView(webpage, anchor):
strongSelf.pushController(InstantPageController(context: strongSelf.context, webPage: webpage, sourcePeerType: .channel, anchor: anchor))
case let .join(link):
strongSelf.presentController(JoinLinkPreviewController(context: strongSelf.context, link: link, navigateToPeer: { peerId, peekData in
strongSelf.presentController(JoinLinkPreviewController(context: strongSelf.context, link: link, navigateToPeer: { peer, peekData in
if let strongSelf = self {
strongSelf.openPeer(peerId: peerId, peer: nil, peekData: peekData)
strongSelf.openPeer(peer: peer, peekData: peekData)
}
}, parentNavigationController: strongSelf.getNavigationController()), .window(.root), nil)
case let .localization(identifier):
strongSelf.presentController(LanguageLinkPreviewController(context: strongSelf.context, identifier: identifier), .window(.root), nil)
case .proxy, .confirmationCode, .cancelAccountReset, .share:
strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), forceExternal: false, openPeer: { peerId, _ in
strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), forceExternal: false, openPeer: { peer, _ in
if let strongSelf = self {
strongSelf.openPeer(peerId: peerId, peer: nil)
strongSelf.openPeer(peer: peer)
}
}, sendFile: nil,
sendSticker: nil,