#4094 - Optimize expensive date formatters creation.

This commit is contained in:
Stefan Ceriu
2021-06-24 11:33:14 +03:00
parent 242fb1d808
commit 3ed8e348cd
2 changed files with 16 additions and 12 deletions
@@ -25,9 +25,14 @@ enum VoiceMessagePlaybackControllerState {
}
class VoiceMessagePlaybackController: VoiceMessageAudioPlayerDelegate, VoiceMessagePlaybackViewDelegate {
private static let timeFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "m:ss"
return dateFormatter
}()
private let audioPlayer: VoiceMessageAudioPlayer
private let timeFormatter: DateFormatter
private var displayLink: CADisplayLink!
private var samples: [Float] = []
@@ -43,9 +48,6 @@ class VoiceMessagePlaybackController: VoiceMessageAudioPlayerDelegate, VoiceMess
init(mediaServiceProvider: VoiceMessageMediaServiceProvider) {
playbackView = VoiceMessagePlaybackView.loadFromNib()
audioPlayer = mediaServiceProvider.audioPlayer()
timeFormatter = DateFormatter()
timeFormatter.dateFormat = "m:ss"
audioPlayer.registerDelegate(self)
playbackView.delegate = self
@@ -128,10 +130,10 @@ class VoiceMessagePlaybackController: VoiceMessageAudioPlayerDelegate, VoiceMess
switch state {
case .stopped:
details.currentTime = timeFormatter.string(from: Date(timeIntervalSinceReferenceDate: audioPlayer.duration))
details.currentTime = VoiceMessagePlaybackController.timeFormatter.string(from: Date(timeIntervalSinceReferenceDate: audioPlayer.duration))
details.progress = 0.0
default:
details.currentTime = timeFormatter.string(from: Date(timeIntervalSinceReferenceDate: audioPlayer.currentTime))
details.currentTime = VoiceMessagePlaybackController.timeFormatter.string(from: Date(timeIntervalSinceReferenceDate: audioPlayer.currentTime))
details.progress = (audioPlayer.duration > 0.0 ? audioPlayer.currentTime / audioPlayer.duration : 0.0)
}