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:
1 parent
7ee12ea1b2
commit
5a2eba97d9
2 files changed
+23
-1
No files matched your search
@@ -50,6 +50,9 @@ const POSITION_POLL_INTERVAL_MS = 1000;
|
|||||||
// Callback for when track ends (for auto-advance)
|
// Callback for when track ends (for auto-advance)
|
||||||
let onCastTrackEnded: (() => Promise<void>) | null = null;
|
let onCastTrackEnded: (() => Promise<void>) | null = null;
|
||||||
|
|
||||||
|
// Callback for when cast disconnects (to reset player state)
|
||||||
|
let onCastDisconnected: (() => void) | null = null;
|
||||||
|
|
||||||
// Track end detection state
|
// Track end detection state
|
||||||
let lastTransportState: string = '';
|
let lastTransportState: string = '';
|
||||||
let trackEndDetected = false;
|
let trackEndDetected = false;
|
||||||
@@ -167,6 +170,18 @@ export async function disconnect(): Promise<void> {
|
|||||||
durationSecs: 0
|
durationSecs: 0
|
||||||
};
|
};
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
|
|
||||||
|
// Notify player to reset its state
|
||||||
|
if (onCastDisconnected) {
|
||||||
|
onCastDisconnected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set callback for when cast disconnects
|
||||||
|
*/
|
||||||
|
export function setOnCastDisconnected(callback: () => void): void {
|
||||||
|
onCastDisconnected = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ import {
|
|||||||
castStop,
|
castStop,
|
||||||
getCastPosition,
|
getCastPosition,
|
||||||
subscribe as subscribeToCast,
|
subscribe as subscribeToCast,
|
||||||
setOnCastTrackEnded
|
setOnCastTrackEnded,
|
||||||
|
setOnCastDisconnected
|
||||||
} from '$lib/stores/castStore';
|
} from '$lib/stores/castStore';
|
||||||
|
|
||||||
// ============ Types ============
|
// ============ Types ============
|
||||||
@@ -419,6 +420,12 @@ export async function startPolling(): Promise<void> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Set callback for when cast disconnects - reset player state
|
||||||
|
setOnCastDisconnected(() => {
|
||||||
|
isPlaying = false;
|
||||||
|
notifyListeners();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user