Files
GLEGram-iOS/submodules/TelegramUI/Sources/ChatSlowmodeHintController.swift
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

52 lines
1.9 KiB
Swift

import Foundation
import Display
import TelegramPresentationData
import SwiftSignalKit
import TelegramStringFormatting
import ChatPresentationInterfaceState
private func timeoutValue(strings: PresentationStrings, slowmodeState: ChatSlowmodeState) -> String {
switch slowmodeState.variant {
case .pendingMessages:
return strings.Chat_SlowmodeTooltipPending
case let .timestamp(untilTimestamp):
let timestamp = Int32(Date().timeIntervalSince1970)
let seconds = max(0, untilTimestamp - timestamp)
return strings.Chat_SlowmodeTooltip(stringForDuration(seconds)).string
}
}
final class ChatSlowmodeHintController: TooltipController {
private let strings: PresentationStrings
private let slowmodeState: ChatSlowmodeState
private var timer: SwiftSignalKit.Timer?
init(presentationData: PresentationData, slowmodeState: ChatSlowmodeState) {
self.strings = presentationData.strings
self.slowmodeState = slowmodeState
super.init(content: .text(timeoutValue(strings: presentationData.strings, slowmodeState: slowmodeState)), baseFontSize: presentationData.listsFontSize.baseDisplaySize, timeout: 2.0, dismissByTapOutside: false, dismissByTapOutsideSource: true)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
self.timer?.invalidate()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let timer = SwiftSignalKit.Timer(timeout: 0.5, repeat: true, completion: { [weak self] in
guard let strongSelf = self else {
return
}
strongSelf.updateContent(.text(timeoutValue(strings: strongSelf.strings, slowmodeState: strongSelf.slowmodeState)), animated: false, extendTimer: false)
}, queue: .mainQueue())
self.timer = timer
timer.start()
}
}