mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
101 lines
4.0 KiB
Swift
101 lines
4.0 KiB
Swift
import Foundation
|
|
import UIKit
|
|
import SwiftSignalKit
|
|
import Postbox
|
|
import TelegramCore
|
|
import AsyncDisplayKit
|
|
import Display
|
|
import UndoUI
|
|
import AccountContext
|
|
import ChatControllerInteraction
|
|
|
|
extension ChatControllerImpl {
|
|
func displayPostedScheduledMessagesToast(ids: [EngineMessage.Id]) {
|
|
let timestamp = CFAbsoluteTimeGetCurrent()
|
|
if self.lastPostedScheduledMessagesToastTimestamp + 0.4 >= timestamp {
|
|
return
|
|
}
|
|
self.lastPostedScheduledMessagesToastTimestamp = timestamp
|
|
|
|
guard case .scheduledMessages = self.presentationInterfaceState.subject else {
|
|
return
|
|
}
|
|
|
|
let _ = (self.context.engine.data.get(
|
|
EngineDataList(ids.map(TelegramEngine.EngineData.Item.Messages.Message.init(id:)))
|
|
)
|
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] messages in
|
|
guard let self else {
|
|
return
|
|
}
|
|
let messages = messages.compactMap { $0 }
|
|
|
|
var found: (message: EngineMessage, file: TelegramMediaFile)?
|
|
outer: for message in messages {
|
|
for media in message.media {
|
|
if let file = media as? TelegramMediaFile, file.isVideo {
|
|
found = (message, file)
|
|
break outer
|
|
}
|
|
}
|
|
}
|
|
|
|
guard let (message, file) = found else {
|
|
return
|
|
}
|
|
|
|
guard case let .loaded(isEmpty, _) = self.chatDisplayNode.historyNode.currentHistoryState else {
|
|
return
|
|
}
|
|
|
|
if isEmpty {
|
|
if let navigationController = self.navigationController as? NavigationController, let topController = navigationController.viewControllers.first(where: { c in
|
|
if let c = c as? ChatController, c.chatLocation == self.chatLocation {
|
|
return true
|
|
}
|
|
return false
|
|
}) as? ChatControllerImpl {
|
|
topController.controllerInteraction?.presentControllerInCurrent(UndoOverlayController(
|
|
presentationData: self.presentationData,
|
|
content: .media(
|
|
context: self.context,
|
|
file: .message(message: MessageReference(message._asMessage()), media: file),
|
|
title: nil,
|
|
text: self.presentationData.strings.Chat_ToastVideoPublished_Title,
|
|
undoText: nil,
|
|
customAction: nil
|
|
),
|
|
elevatedLayout: false,
|
|
position: .top,
|
|
animateInAsReplacement: false,
|
|
action: { _ in false }
|
|
), nil)
|
|
|
|
self.dismiss()
|
|
}
|
|
} else {
|
|
self.controllerInteraction?.presentControllerInCurrent(UndoOverlayController(
|
|
presentationData: self.presentationData,
|
|
content: .media(
|
|
context: self.context,
|
|
file: .message(message: MessageReference(message._asMessage()), media: file),
|
|
title: nil,
|
|
text: self.presentationData.strings.Chat_ToastVideoPublished_Title,
|
|
undoText: self.presentationData.strings.Chat_ToastVideoPublished_Action,
|
|
customAction: { [weak self] in
|
|
guard let self else {
|
|
return
|
|
}
|
|
self.dismiss()
|
|
}
|
|
),
|
|
elevatedLayout: false,
|
|
position: .top,
|
|
animateInAsReplacement: false,
|
|
action: { _ in false }
|
|
), nil)
|
|
}
|
|
})
|
|
}
|
|
}
|