Display voice message progress cursor if progress is greater than zero (#2077)

This commit is contained in:
Nicolas Mauri
2023-11-13 16:41:38 +01:00
committed by GitHub
parent bc46c48b2e
commit acd079199a
7 changed files with 14 additions and 16 deletions
@@ -41,7 +41,9 @@ class AudioPlayerState: ObservableObject, Identifiable {
/// updates are delayed by a fixed amount of time /// updates are delayed by a fixed amount of time
@Published private(set) var playerButtonPlaybackState: AudioPlayerPlaybackState @Published private(set) var playerButtonPlaybackState: AudioPlayerPlaybackState
@Published private(set) var progress: Double @Published private(set) var progress: Double
@Published private(set) var showProgressIndicator: Bool var showProgressIndicator: Bool {
progress > 0
}
private weak var audioPlayer: AudioPlayerProtocol? private weak var audioPlayer: AudioPlayerProtocol?
private var audioPlayerSubscription: AnyCancellable? private var audioPlayerSubscription: AnyCancellable?
@@ -65,7 +67,6 @@ class AudioPlayerState: ObservableObject, Identifiable {
self.duration = duration self.duration = duration
self.waveform = waveform ?? EstimatedWaveform(data: []) self.waveform = waveform ?? EstimatedWaveform(data: [])
self.progress = progress self.progress = progress
showProgressIndicator = false
playbackState = .stopped playbackState = .stopped
playerButtonPlaybackState = .stopped playerButtonPlaybackState = .stopped
setupPlaybackStateSubscription() setupPlaybackStateSubscription()
@@ -79,7 +80,6 @@ class AudioPlayerState: ObservableObject, Identifiable {
func updateState(progress: Double) async { func updateState(progress: Double) async {
let progress = max(0.0, min(progress, 1.0)) let progress = max(0.0, min(progress, 1.0))
self.progress = progress self.progress = progress
showProgressIndicator = true
if let audioPlayer { if let audioPlayer {
var shouldResumeProgressPublishing = false var shouldResumeProgressPublishing = false
if audioPlayer.state == .playing { if audioPlayer.state == .playing {
@@ -108,7 +108,6 @@ class AudioPlayerState: ObservableObject, Identifiable {
audioPlayerSubscription = nil audioPlayerSubscription = nil
audioPlayer = nil audioPlayer = nil
playbackState = .stopped playbackState = .stopped
showProgressIndicator = false
} }
func reportError(_ error: Error) { func reportError(_ error: Error) {
@@ -143,13 +142,11 @@ class AudioPlayerState: ObservableObject, Identifiable {
} }
startPublishProgress() startPublishProgress()
playbackState = .playing playbackState = .playing
showProgressIndicator = true
case .didPausePlaying, .didStopPlaying, .didFinishPlaying: case .didPausePlaying, .didStopPlaying, .didFinishPlaying:
stopPublishProgress() stopPublishProgress()
playbackState = .stopped playbackState = .stopped
if case .didFinishPlaying = action { if case .didFinishPlaying = action {
progress = 0.0 progress = 0.0
showProgressIndicator = false
} }
case .didFailWithError: case .didFailWithError:
stopPublishProgress() stopPublishProgress()
@@ -285,7 +285,7 @@ class AudioPlayerStateTests: XCTestCase {
} }
audioPlayerActionsSubject.send(.didStartPlaying) audioPlayerActionsSubject.send(.didStartPlaying)
try await deferredPlayingState.fulfill() try await deferredPlayingState.fulfill()
XCTAssertTrue(audioPlayerState.showProgressIndicator) XCTAssertFalse(audioPlayerState.showProgressIndicator)
let deferred = deferFulfillment(audioPlayerState.$playbackState) { action in let deferred = deferFulfillment(audioPlayerState.$playbackState) { action in
switch action { switch action {
@@ -300,6 +300,6 @@ class AudioPlayerStateTests: XCTestCase {
try await deferred.fulfill() try await deferred.fulfill()
XCTAssertEqual(audioPlayerState.playbackState, .error) XCTAssertEqual(audioPlayerState.playbackState, .error)
XCTAssertFalse(audioPlayerState.isPublishingProgress) XCTAssertFalse(audioPlayerState.isPublishingProgress)
XCTAssertTrue(audioPlayerState.showProgressIndicator) XCTAssertFalse(audioPlayerState.showProgressIndicator)
} }
} }
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e47226f5fbdd1032534b2f6a1a715d9eee94b25e5ec7e02592b7c51c10a33f70 oid sha256:645fc597d30595973832dc7adb5ef5fd6cb20e59d21d6ecebc5812f0622ed9ec
size 61828 size 61821
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:be68924b6f15ba61c3e9e18a942c724df55f6656146a3f933a74f2f0880568bf oid sha256:3b90a9dd7a0d6a516843258eef338b50004d28e7533317533e4fcd15c4e44b7e
size 61158 size 61969
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:c9bbb2a5218b2055e27ed7ab7770acd0e8e26973505bd28f979cfc43bffd0a64 oid sha256:93e0061262bfa46b6d69a4546e65776b1165dc94110c2b77d6190115e935c1eb
size 71007 size 71420
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:60cce5e7f560c36f75ae5737736ab539be31bbf094172aae9d9034f3f4fb4786 oid sha256:1e430f4465a8963c397f2bb3eb0a43487ba203a2190b3144a5202c920a658730
size 67320 size 67743
+1
View File
@@ -0,0 +1 @@
The voice message playback position indicator is displayed during playback or pause.