9134e7d216
CC12: renderer views/ (5 screens + Onboarding + settings cards) + lib/ (theme/thumb/datetime/id/qualityOptions/useClipboardLink/queueStats); main core/ (buildArgs/validation/indexerCore/ytdlpPolicy). git mv preserved history; all src+test imports updated. Build emits view chunks from views/, 344 tests + typecheck green, live probe rendered all screens. CC7: wc/onProgress is the leading arg everywhere — downloadAppUpdate(wc,url), indexSource(onProgress,url,signal), indexSourceCancelable(onProgress,url). CC10: closed by-design — jsonStore backs all records; settings stay in electron-store for DPAPI secret encryption (a deliberate two-store split). Also closes the UI24/W4 context-menu cross-reference. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
/**
|
|
* Pure auto-update scheduling policy for yt-dlp. Kept free of any electron /
|
|
* node-runtime dependency (like buildArgs.ts) so the throttle can be unit-tested
|
|
* without spinning up Electron. ytdlp.ts imports these to drive the real check.
|
|
*/
|
|
|
|
/** Once-a-day throttle for the startup auto-update check. */
|
|
export const AUTO_UPDATE_INTERVAL_MS = 24 * 60 * 60 * 1000
|
|
|
|
/**
|
|
* Whether a background yt-dlp update check should run now: only when auto-update
|
|
* is enabled AND at least one interval has elapsed since the last check. A
|
|
* zero/absent lastCheck means "never checked" → run. `now` and the interval are
|
|
* passed in so the decision is a pure function of its inputs.
|
|
*/
|
|
export function shouldAutoCheckYtdlp(
|
|
enabled: boolean,
|
|
lastCheck: number,
|
|
now: number,
|
|
intervalMs: number = AUTO_UPDATE_INTERVAL_MS
|
|
): boolean {
|
|
if (!enabled) return false
|
|
if (!lastCheck) return true
|
|
// A backward system-clock correction can leave `lastCheck` in the "future"
|
|
// relative to `now`, making `now - lastCheck` negative so the daily check would
|
|
// never come due again. Treat a future timestamp as skewed/bogus and run the
|
|
// check rather than waiting out a negative interval (R9).
|
|
if (lastCheck > now) return true
|
|
return now - lastCheck >= intervalMs
|
|
}
|