mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 14:35:41 +00:00
b4c3124168
Small fix for hot playback cache: eviction keeps current and next only; prefetch up to five tracks when under cap, always fetch the immediate next; grace for the previous current until debounce; run evict immediately on MB or folder changes; re-read cap after download; optional Track.size; live disk usage on Audio settings.
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
/** When true, hot-cache prefetch must not start new downloads (playback has priority). */
|
|
let deferHotCachePrefetch = false;
|
|
|
|
/** Last track that was «current» before a forward queue step — not evicted until debounce elapses. */
|
|
let previousTrackGraceUntilMs = 0;
|
|
let previousTrackGraceTrackId: string | null = null;
|
|
let previousTrackGraceServerId: string | null = null;
|
|
|
|
export function setDeferHotCachePrefetch(v: boolean): void {
|
|
deferHotCachePrefetch = v;
|
|
}
|
|
|
|
export function getDeferHotCachePrefetch(): boolean {
|
|
return deferHotCachePrefetch;
|
|
}
|
|
|
|
/** Call when `queueIndex` advances; the old current track stays eviction-safe for `debounceSec` (capped at 600 s). */
|
|
export function bumpHotCachePreviousTrackGrace(
|
|
trackId: string,
|
|
serverId: string,
|
|
debounceSec: number,
|
|
): void {
|
|
const sec = Number.isFinite(debounceSec) ? Math.min(600, Math.max(0, debounceSec)) : 0;
|
|
previousTrackGraceUntilMs = Date.now() + sec * 1000;
|
|
previousTrackGraceTrackId = trackId;
|
|
previousTrackGraceServerId = serverId;
|
|
}
|
|
|
|
export function isHotCachePreviousTrackUnderGrace(trackId: string, serverId: string): boolean {
|
|
if (!previousTrackGraceTrackId || Date.now() >= previousTrackGraceUntilMs) return false;
|
|
return previousTrackGraceTrackId === trackId && previousTrackGraceServerId === serverId;
|
|
}
|
|
|
|
export function clearHotCachePreviousGrace(): void {
|
|
previousTrackGraceUntilMs = 0;
|
|
previousTrackGraceTrackId = null;
|
|
previousTrackGraceServerId = null;
|
|
}
|