diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VoiceMessageRoomTimelineView.swift b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VoiceMessageRoomTimelineView.swift index 8a35a9bb0..62aae91f0 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VoiceMessageRoomTimelineView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VoiceMessageRoomTimelineView.swift @@ -6,7 +6,6 @@ // Please see LICENSE files in the repository root for full details. // -import Combine import Foundation import SwiftUI diff --git a/ElementX/Sources/Services/Audio/Player/AudioPlayerProtocol.swift b/ElementX/Sources/Services/Audio/Player/AudioPlayerProtocol.swift index d5e0b525f..e1dd16a13 100644 --- a/ElementX/Sources/Services/Audio/Player/AudioPlayerProtocol.swift +++ b/ElementX/Sources/Services/Audio/Player/AudioPlayerProtocol.swift @@ -41,9 +41,9 @@ protocol AudioPlayerProtocol: AnyObject { var playbackURL: URL? { get } var state: MediaPlayerState { get } var playbackSpeed: Float { get } - + var actions: AnyPublisher { get } - + func load(sourceURL: URL, playbackURL: URL, autoplay: Bool) func reset() func play() diff --git a/ElementX/Sources/Services/Audio/Player/AudioPlayerState.swift b/ElementX/Sources/Services/Audio/Player/AudioPlayerState.swift index d6c7d850c..3272d28ed 100644 --- a/ElementX/Sources/Services/Audio/Player/AudioPlayerState.swift +++ b/ElementX/Sources/Services/Audio/Player/AudioPlayerState.swift @@ -37,12 +37,12 @@ class AudioPlayerState: ObservableObject, Identifiable { /// updates are delayed by a fixed amount of time @Published private(set) var playerButtonPlaybackState: AudioPlayerPlaybackState @Published private(set) var playbackSpeed: VoiceMessagePlaybackSpeed - + private weak var audioPlayer: AudioPlayerProtocol? private var audioPlayerSubscription: AnyCancellable? private var playbackStateSubscription: AnyCancellable? private var displayLink: CADisplayLink? - + /// The file url that the last player attached to this object has loaded. /// The file url persists even if the AudioPlayer will be detached later. private(set) var fileURL: URL? @@ -58,7 +58,7 @@ class AudioPlayerState: ObservableObject, Identifiable { var isPublishingProgress: Bool { displayLink != nil } - + init(id: AudioPlayerStateIdentifier, title: String, duration: Double, waveform: EstimatedWaveform? = nil, @@ -119,7 +119,7 @@ class AudioPlayerState: ObservableObject, Identifiable { func reportError() { playbackState = .error } - + func setPlaybackSpeed(_ speed: VoiceMessagePlaybackSpeed) { playbackSpeed = speed audioPlayer?.setPlaybackSpeed(speed.rawValue) diff --git a/UnitTests/Sources/AudioPlayerStateTests.swift b/UnitTests/Sources/AudioPlayerStateTests.swift index be59a2eaa..aec269900 100644 --- a/UnitTests/Sources/AudioPlayerStateTests.swift +++ b/UnitTests/Sources/AudioPlayerStateTests.swift @@ -275,29 +275,23 @@ struct AudioPlayerStateTests { #expect(!audioPlayerState.showProgressIndicator) } - func testSetPlaybackSpeed() { + @Test + func setPlaybackSpeed() { audioPlayerState.attachAudioPlayer(audioPlayerMock) - XCTAssertEqual(audioPlayerState.playbackSpeed, 1.0) + #expect(audioPlayerState.playbackSpeed == .default) - audioPlayerState.setPlaybackSpeed(1.5) - XCTAssertEqual(audioPlayerState.playbackSpeed, 1.5) - XCTAssertEqual(audioPlayerMock.setPlaybackSpeedReceivedSpeed, 1.5) + audioPlayerState.setPlaybackSpeed(.fast) + #expect(audioPlayerState.playbackSpeed == .fast) + #expect(audioPlayerMock.setPlaybackSpeedReceivedSpeed == 1.5) - audioPlayerState.setPlaybackSpeed(2.0) - XCTAssertEqual(audioPlayerState.playbackSpeed, 2.0) - XCTAssertEqual(audioPlayerMock.setPlaybackSpeedReceivedSpeed, 2.0) + audioPlayerState.setPlaybackSpeed(.fastest) + #expect(audioPlayerState.playbackSpeed == .fastest) + #expect(audioPlayerMock.setPlaybackSpeedReceivedSpeed == 2.0) - audioPlayerState.setPlaybackSpeed(0.5) - XCTAssertEqual(audioPlayerState.playbackSpeed, 0.5) - XCTAssertEqual(audioPlayerMock.setPlaybackSpeedReceivedSpeed, 0.5) - } - - func testSetPlaybackSpeedWithoutPlayer() { - XCTAssertEqual(audioPlayerState.playbackSpeed, 1.0) - - audioPlayerState.setPlaybackSpeed(2.0) - XCTAssertEqual(audioPlayerState.playbackSpeed, 2.0) + audioPlayerState.setPlaybackSpeed(.slow) + #expect(audioPlayerState.playbackSpeed == .slow) + #expect(audioPlayerMock.setPlaybackSpeedReceivedSpeed == 0.5) } @Test