Video improvements

This commit is contained in:
Isaac
2025-01-28 20:51:04 +04:00
parent 846e495d12
commit 3728be84cb
9 changed files with 465 additions and 119 deletions

View File

@@ -51,7 +51,33 @@ extension ChatControllerImpl {
return
}
UIPasteboard.general.string = timecode
if message.id.namespace == Namespaces.Message.Cloud, let channel = message.peers[message.id.peerId] as? TelegramChannel, let addressName = channel.addressName {
var timestampSuffix = ""
let startAtTimestamp = parseTimeString(timecode)
var startAtTimestampString = ""
let hours = startAtTimestamp / 3600
let minutes = startAtTimestamp / 60 % 60
let seconds = startAtTimestamp % 60
if hours == 0 && minutes == 0 {
startAtTimestampString = "\(startAtTimestamp)"
} else {
if hours != 0 {
startAtTimestampString += "\(hours)h"
}
if minutes != 0 {
startAtTimestampString += "\(minutes)m"
}
if seconds != 0 {
startAtTimestampString += "\(seconds)s"
}
}
timestampSuffix = "?t=\(startAtTimestampString)"
let inputCopyText = "https://t.me/\(addressName)/\(message.id.id)\(timestampSuffix)"
UIPasteboard.general.string = inputCopyText
} else {
UIPasteboard.general.string = timecode
}
self.present(UndoOverlayController(presentationData: self.presentationData, content: .copy(text: presentationData.strings.Conversation_TextCopied), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .current)
}))
@@ -67,3 +93,30 @@ extension ChatControllerImpl {
self.window?.presentInGlobalOverlay(controller)
}
}
private func parseTimeString(_ timeString: String) -> Int {
let parts = timeString.split(separator: ":").map(String.init)
switch parts.count {
case 1:
// Single component (e.g. "1", "10") => seconds
return Int(parts[0]) ?? 0
case 2:
// Two components (e.g. "1:01", "10:30") => minutes:seconds
let minutes = Int(parts[0]) ?? 0
let seconds = Int(parts[1]) ?? 0
return minutes * 60 + seconds
case 3:
// Three components (e.g. "1:01:01", "10:00:00") => hours:minutes:seconds
let hours = Int(parts[0]) ?? 0
let minutes = Int(parts[1]) ?? 0
let seconds = Int(parts[2]) ?? 0
return hours * 3600 + minutes * 60 + seconds
default:
// Fallback to 0 or handle invalid format
return 0
}
}