Various improvements

This commit is contained in:
Ilya Laktyushin
2025-07-20 02:49:04 +01:00
parent fd9b25b527
commit 5a1ea16354
17 changed files with 2552 additions and 23 deletions

View File

@@ -20,12 +20,18 @@ import ChatControllerInteraction
import SavedMessagesScreen
import WallpaperGalleryScreen
import ChatMessageNotificationItem
import FaceScanScreen
public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) {
if case let .peer(peer) = params.chatLocation {
let _ = params.context.engine.peers.ensurePeerIsLocallyAvailable(peer: peer).startStandalone()
}
var requiresAgeVerification: Signal<Bool, NoError> = .single(false)
if !params.skipAgeVerification, case let .peer(peer) = params.chatLocation {
requiresAgeVerification = requireAgeVerification(context: params.context, peer: peer)
}
var viewForumAsMessages: Signal<Bool, NoError> = .single(false)
if case let .peer(peer) = params.chatLocation, case let .channel(channel) = peer, channel.flags.contains(.isMonoforum) {
if let linkedMonoforumId = channel.linkedMonoforumId {
@@ -67,9 +73,18 @@ public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParam
}
}
let _ = (viewForumAsMessages
|> take(1)
|> deliverOnMainQueue).start(next: { viewForumAsMessages in
let _ = combineLatest(
queue: Queue.mainQueue(),
viewForumAsMessages |> take(1),
requiresAgeVerification
).start(next: { viewForumAsMessages, requiresAgeVerification in
if requiresAgeVerification, let parentController = params.navigationController.viewControllers.last as? ViewController {
presentAgeVerification(context: params.context, parentController: parentController, completion: {
navigateToChatControllerImpl(params.withSkipAgeVerification(true))
})
return
}
if case let .peer(peer) = params.chatLocation, case let .channel(channel) = peer, channel.flags.contains(.isForum), !viewForumAsMessages {
for controller in params.navigationController.viewControllers.reversed() {
var chatListController: ChatListControllerImpl?
@@ -118,9 +133,7 @@ public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParam
controller.activateSearch(query: activateMessageSearch.1)
}
if let chatListCompletion {
chatListCompletion(controller)
}
chatListCompletion(controller)
})
return