fix(cast): reset player state on cast disconnect

- Add onCastDisconnected callback to castStore
- Reset isPlaying state when cast disconnects
- Ensures play indicator stops in UI when DLNA disconnects

cpvsc
This commit is contained in:
vicrodh committed 2026-01-26 10:20:32 -06:00
1 parent 7ee12ea1b2
commit 5a2eba97d9
2 files changed
+23 -1

No files matched your search

+15
View File
@@ -50,6 +50,9 @@ const POSITION_POLL_INTERVAL_MS = 1000;
// Callback for when track ends (for auto-advance)
let onCastTrackEnded: (() => Promise<void>) | null = null;
// Callback for when cast disconnects (to reset player state)
let onCastDisconnected: (() => void) | null = null;
// Track end detection state
let lastTransportState: string = '';
let trackEndDetected = false;
@@ -167,6 +170,18 @@ export async function disconnect(): Promise<void> {
durationSecs: 0
};
notifyListeners();
// Notify player to reset its state
if (onCastDisconnected) {
onCastDisconnected();
}
}
/**
* Set callback for when cast disconnects
*/
export function setOnCastDisconnected(callback: () => void): void {
onCastDisconnected = callback;
}
/**
+8 -1
View File
@@ -16,7 +16,8 @@ import {
castStop,
getCastPosition,
subscribe as subscribeToCast,
setOnCastTrackEnded
setOnCastTrackEnded,
setOnCastDisconnected
} from '$lib/stores/castStore';
// ============ Types ============
@@ -419,6 +420,12 @@ export async function startPolling(): Promise<void> {
}
}
});
// Set callback for when cast disconnects - reset player state
setOnCastDisconnected(() => {
isPlaying = false;
notifyListeners();
});
}
}