Display recording milliseconds

This commit is contained in:
jack
2025-10-15 17:37:19 +01:00
committed by islam
parent 3c66ca7499
commit c36b582209
+16 -5
View File
@@ -68,6 +68,7 @@ struct ContentView: View {
@State private var isPreparingVoiceNote = false
@State private var recordingDuration: TimeInterval = 0
@State private var recordingTimer: Timer?
@State private var recordingStartDate: Date?
@State private var showImageImporter = false
@State private var showFileImporter = false
#if os(iOS)
@@ -1983,9 +1984,11 @@ private extension ContentView {
func formattedRecordingDuration() -> String {
let clamped = max(0, recordingDuration)
let minutes = Int(clamped) / 60
let seconds = Int(clamped) % 60
return String(format: "%02d:%02d", minutes, seconds)
let totalMilliseconds = Int((clamped * 1000).rounded())
let minutes = totalMilliseconds / 60_000
let seconds = (totalMilliseconds % 60_000) / 1_000
let centiseconds = (totalMilliseconds % 1_000) / 10
return String(format: "%02d:%02d.%02d", minutes, seconds, centiseconds)
}
func startVoiceRecording() {
@@ -2002,9 +2005,12 @@ private extension ContentView {
do {
_ = try VoiceRecorder.shared.startRecording()
recordingDuration = 0
recordingStartDate = Date()
recordingTimer?.invalidate()
recordingTimer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
recordingDuration += 0.1
recordingTimer = Timer.scheduledTimer(withTimeInterval: 0.05, repeats: true) { _ in
if let start = recordingStartDate {
recordingDuration = Date().timeIntervalSince(start)
}
}
if let timer = recordingTimer {
RunLoop.main.add(timer, forMode: .common)
@@ -2018,6 +2024,7 @@ private extension ContentView {
VoiceRecorder.shared.cancelRecording()
isPreparingVoiceNote = false
isRecordingVoiceNote = false
recordingStartDate = nil
}
}
}
@@ -2032,6 +2039,10 @@ private extension ContentView {
isRecordingVoiceNote = false
recordingTimer?.invalidate()
recordingTimer = nil
if let start = recordingStartDate {
recordingDuration = Date().timeIntervalSince(start)
}
recordingStartDate = nil
if send {
let minimumDuration: TimeInterval = 1.0
VoiceRecorder.shared.stopRecording { url in