mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
[WIP] Topics
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user