pull/288/head
nielsandriesse 5 years ago
parent 0e03bba96e
commit 192c9b2894

@ -5,6 +5,7 @@ final class VoiceMessageView : UIView {
private let voiceMessage: TSAttachment private let voiceMessage: TSAttachment
private let isOutgoing: Bool private let isOutgoing: Bool
private var isLoading = false private var isLoading = false
private var isForcedAnimation = false
private var volumeSamples: [Float] = [] { didSet { updateShapeLayers() } } private var volumeSamples: [Float] = [] { didSet { updateShapeLayers() } }
@objc var progress: CGFloat = 0 { didSet { updateShapeLayers() } } @objc var progress: CGFloat = 0 { didSet { updateShapeLayers() } }
@objc var duration: Int = 0 { didSet { updateDurationLabel() } } @objc var duration: Int = 0 { didSet { updateDurationLabel() } }
@ -71,6 +72,7 @@ final class VoiceMessageView : UIView {
AudioUtilities.getVolumeSamples(for: url, targetSampleCount: targetSampleCount).done(on: DispatchQueue.main) { [weak self] volumeSamples in AudioUtilities.getVolumeSamples(for: url, targetSampleCount: targetSampleCount).done(on: DispatchQueue.main) { [weak self] volumeSamples in
guard let self = self else { return } guard let self = self else { return }
self.hideLoader() self.hideLoader()
self.isForcedAnimation = true
self.volumeSamples = volumeSamples self.volumeSamples = volumeSamples
Storage.write { transaction in Storage.write { transaction in
Storage.setVolumeSamples(for: voiceMessageID, to: volumeSamples, using: transaction) Storage.setVolumeSamples(for: voiceMessageID, to: volumeSamples, using: transaction)
@ -160,7 +162,7 @@ final class VoiceMessageView : UIView {
} }
backgroundPath.close() backgroundPath.close()
foregroundPath.close() foregroundPath.close()
if isLoading { if isLoading || isForcedAnimation {
let animation = CABasicAnimation(keyPath: "path") let animation = CABasicAnimation(keyPath: "path")
animation.duration = 0.25 animation.duration = 0.25
animation.toValue = backgroundPath animation.toValue = backgroundPath
@ -171,6 +173,7 @@ final class VoiceMessageView : UIView {
backgroundShapeLayer.path = backgroundPath.cgPath backgroundShapeLayer.path = backgroundPath.cgPath
} }
foregroundShapeLayer.path = foregroundPath.cgPath foregroundShapeLayer.path = foregroundPath.cgPath
isForcedAnimation = false
} }
private func updateDurationLabel() { private func updateDurationLabel() {

Loading…
Cancel
Save