From 0fd1e71eb69551791c0e7188a363cd5bfaa7c07a Mon Sep 17 00:00:00 2001 From: krish <284604562+rcycle777@users.noreply.github.com> Date: Mon, 21 Sep 2026 20:51:02 +0530 Subject: [PATCH] fix(state): allow local music files to play regardless of refusal status --- crates/state/src/playback.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/crates/state/src/playback.rs b/crates/state/src/playback.rs index 64be552e..1a803a35 100644 --- a/crates/state/src/playback.rs +++ b/crates/state/src/playback.rs @@ -541,19 +541,22 @@ impl Playback { /// Loads a track to play from `at`, after the debounce `start` asks for. The state reads /// Loading from here until the engine reports audio; a refusal or an unplayable track fails /// without reaching the engine. - fn load_from(&mut self, track: &Track, at: Duration, start: Start, cx: &mut Context) { - match self.refused { - Some(Refusal::Keys) => return self.refuse(cx), - Some(Refusal::SignIn) => return self.gate(cx), - None => {} - } + fn load_from(&mut self, track: &Track, at: Duration, start: Start, cx: &mut Context) { let Some(id) = track.id.clone() else { return self.failed(format!("{} has no track id", track.name), cx); }; + let is_local = music::is_local_id(&id); + if !is_local { + match self.refused { + Some(Refusal::Keys) => return self.refuse(cx), + Some(Refusal::SignIn) => return self.gate(cx), + None => {} + } + } if !track.playable { return self.failed(format!("{} is not available to stream", track.name), cx); } - if !music::is_local_id(&id) && Network::lost(cx) { + if !is_local && Network::lost(cx) { return self.unreachable(start, cx); } if self.engine_for(&id).is_none() { @@ -2310,4 +2313,4 @@ mod tests { previous = sample; } } -} +} \ No newline at end of file