diff --git a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt index 667fe2dc..339280da 100644 --- a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt +++ b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt @@ -1452,7 +1452,7 @@ class PlaybackController( } override fun onError(message: UiMessage) { - showMessage(message) + if (player?.playWhenReady == true) showMessage(message) refresh() } } diff --git a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt index acfbf07d..abd34bd9 100644 --- a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt +++ b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt @@ -348,15 +348,33 @@ class PlaybackControllerTest { runBlocking { queues.replace(listOf(queues.albumEntry(1, "al1"))) } controller.connect() - await { handle.items.isNotEmpty() } + await { handle.operations.contains("prepare") } - assertTrue(handle.operations.contains("prepare")) assertFalse(handle.operations.contains("play")) assertFalse(handle.isIdle) assertFalse(handle.playWhenReady) assertFalse(controller.state.value.isPlaying) } + @Test + fun aPrepareFailureBeforePlaybackIsNotReported() { + seedAlbum(3, sourceId = 1) + runBlocking { queues.replace(listOf(queues.albumEntry(1, "al1"))) } + + controller.connect() + await { handle.operations.contains("prepare") } + + handle.fail(UiMessage(R.string.playback_error_network)) + assertTrue(messages.isEmpty()) + + controller.togglePlayPause() + await { handle.operations.contains("play") } + handle.fail(UiMessage(R.string.playback_error_network)) + await { messages.isNotEmpty() } + + assertEquals(1, messages.size) + } + @Test fun restoringAnEmptyQueueDoesNotPrepare() { seedAlbum(3, sourceId = 1) @@ -387,14 +405,13 @@ class PlaybackControllerTest { runBlocking { queues.replace(listOf(queues.albumEntry(1, "al1"))) } controller.connect() - await { handle.items.isNotEmpty() } + await { handle.operations.contains("prepare") } handle.operations.clear() controller.togglePlayPause() await { handle.operations.contains("play") } assertEquals(listOf("play"), handle.operations) - assertTrue(handle.playWhenReady) } @Test