43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
import { writable } from "svelte/store";
|
|
import { apiFetch } from "../utils/api.js";
|
|
|
|
export const tvShowCount = writable(0);
|
|
let requestSeq = 0;
|
|
let lastValue = 0;
|
|
let zeroTimer = null;
|
|
|
|
export async function refreshTvShowCount() {
|
|
const ticket = ++requestSeq;
|
|
try {
|
|
const resp = await apiFetch("/api/tvshows");
|
|
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
|
|
const list = await resp.json();
|
|
if (ticket !== requestSeq) return;
|
|
const nextVal = Array.isArray(list) ? list.length : 0;
|
|
if (nextVal > 0) {
|
|
if (zeroTimer) {
|
|
clearTimeout(zeroTimer);
|
|
zeroTimer = null;
|
|
}
|
|
lastValue = nextVal;
|
|
tvShowCount.set(nextVal);
|
|
} else if (lastValue > 0) {
|
|
if (zeroTimer) clearTimeout(zeroTimer);
|
|
const zeroTicket = requestSeq;
|
|
zeroTimer = setTimeout(() => {
|
|
if (zeroTicket === requestSeq) {
|
|
lastValue = 0;
|
|
tvShowCount.set(0);
|
|
}
|
|
zeroTimer = null;
|
|
}, 500);
|
|
} else {
|
|
lastValue = 0;
|
|
tvShowCount.set(0);
|
|
}
|
|
} catch (err) {
|
|
console.warn("⚠️ TV show count güncellenemedi:", err?.message || err);
|
|
// Hata durumunda mevcut değeri koru, titreşimi önle
|
|
}
|
|
}
|