Sİdebar'da music kategorisi oluşturuldu

This commit is contained in:
2025-12-01 01:50:33 +03:00
parent cd36080b3a
commit 1c39ef5d37
8 changed files with 536 additions and 18 deletions

View File

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

View File

@@ -0,0 +1,42 @@
import { writable } from "svelte/store";
import { apiFetch } from "../utils/api.js";
export const musicCount = writable(0);
let requestSeq = 0;
let lastValue = 0;
let zeroTimer = null;
export async function refreshMusicCount() {
const ticket = ++requestSeq;
try {
const resp = await apiFetch("/api/music");
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;
musicCount.set(nextVal);
} else if (lastValue > 0) {
if (zeroTimer) clearTimeout(zeroTimer);
const zeroTicket = requestSeq;
zeroTimer = setTimeout(() => {
if (zeroTicket === requestSeq) {
lastValue = 0;
musicCount.set(0);
}
zeroTimer = null;
}, 500);
} else {
lastValue = 0;
musicCount.set(0);
}
} catch (err) {
console.warn("⚠️ Music count güncellenemedi:", err?.message || err);
// Hata durumunda mevcut değeri koru, titreşimi önle
}
}

View File

@@ -2,15 +2,41 @@ 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();
tvShowCount.set(Array.isArray(list) ? list.length : 0);
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);
tvShowCount.set(0);
// Hata durumunda mevcut değeri koru, titreşimi önle
}
}