From 6ef9efc8bf68ddc8b631d3f36299f38ef6144f91 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Wed, 4 Mar 2026 22:32:33 -0800 Subject: [PATCH] add 10s retry for playback on network err (#1779) --- src/i18n/locales/en.json | 1 + .../audio-player/engine/web-player-engine.tsx | 67 ++++++++++++++++--- .../player/audio-player/web-player.tsx | 13 +++- 3 files changed, 72 insertions(+), 9 deletions(-) diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 323a5faed..34937f60e 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -224,6 +224,7 @@ "notificationDenied": "permissions for notifications were denied. this setting has no effect", "openError": "could not open file", "playbackError": "an error occurred when trying to play the media", + "playbackPausedDueToError": "playback was paused due to an error", "remoteDisableError": "an error occurred when trying to $t(common.disable) the remote server", "remoteEnableError": "an error occurred when trying to $t(common.enable) the remote server", "remotePortError": "an error occurred when trying to set the remote server port", diff --git a/src/renderer/features/player/audio-player/engine/web-player-engine.tsx b/src/renderer/features/player/audio-player/engine/web-player-engine.tsx index dec9ff203..590cef4dc 100644 --- a/src/renderer/features/player/audio-player/engine/web-player-engine.tsx +++ b/src/renderer/features/player/audio-player/engine/web-player-engine.tsx @@ -25,6 +25,7 @@ interface WebPlayerEngineProps { isTransitioning: boolean; onEndedPlayer1: () => void; onEndedPlayer2: () => void; + onErrorPause: () => void; onProgressPlayer1: (e: PlayerOnProgressProps) => void; onProgressPlayer2: (e: PlayerOnProgressProps) => void; onStartedPlayer1: (player: ReactPlayer) => void; @@ -39,6 +40,9 @@ interface WebPlayerEngineProps { volume: number; } +const MAX_NETWORK_RETRIES = 5; +const NETWORK_RETRY_DELAY_MS = 2000; + // Credits: https://gist.github.com/novwhisky/8a1a0168b94f3b6abfaa?permalink_comment_id=1551393#gistcomment-1551393 // This is used so that the player will always have an