TVDB özelliği eklendi.

This commit is contained in:
2025-10-28 04:14:42 +03:00
parent a2adc9958a
commit 8e07fb4e05
7 changed files with 3154 additions and 6 deletions

View File

@@ -8,12 +8,29 @@
import Sharing from "./routes/Sharing.svelte";
import Trash from "./routes/Trash.svelte";
import Movies from "./routes/Movies.svelte";
import TvShows from "./routes/TvShows.svelte";
import Login from "./routes/Login.svelte";
import { API } from "./utils/api.js";
import { refreshMovieCount } from "./stores/movieStore.js";
import { refreshTvShowCount } from "./stores/tvStore.js";
const token = localStorage.getItem("token");
let menuOpen = false;
let wsCounts;
let refreshTimer = null;
const scheduleMediaRefresh = () => {
if (refreshTimer) return;
refreshTimer = setTimeout(async () => {
refreshTimer = null;
try {
await Promise.all([refreshMovieCount(), refreshTvShowCount()]);
} catch (err) {
console.warn("Medya sayacı yenileme başarısız:", err);
}
}, 400);
};
// Menü aç/kapat (hamburger butonuyla)
const toggleMenu = () => {
@@ -28,7 +45,48 @@
onMount(() => {
if (token) {
refreshMovieCount();
refreshTvShowCount();
const authToken = localStorage.getItem("token");
if (authToken) {
const wsUrl = `${API.replace("http", "ws")}?token=${authToken}`;
try {
wsCounts = new WebSocket(wsUrl);
wsCounts.onmessage = (event) => {
try {
const msg = JSON.parse(event.data);
if (msg.type === "fileUpdate") {
scheduleMediaRefresh();
} else if (
msg.type === "progress" &&
Array.isArray(msg.torrents) &&
msg.torrents.some((t) => Number(t.progress) >= 1)
) {
scheduleMediaRefresh();
}
} catch (err) {
console.warn("WS mesajı çözümlenemedi:", err);
}
};
wsCounts.onerror = () => scheduleMediaRefresh();
} catch (err) {
console.warn("WS bağlantısı kurulamadı:", err);
}
}
}
return () => {
if (wsCounts) {
try {
wsCounts.close();
} catch (err) {
/* no-op */
}
wsCounts = null;
}
if (refreshTimer) {
clearTimeout(refreshTimer);
refreshTimer = null;
}
};
});
</script>
@@ -45,6 +103,7 @@
<Route path="/" component={Files} />
<Route path="/files" component={Files} />
<Route path="/movies" component={Movies} />
<Route path="/tv" component={TvShows} />
<Route path="/transfers" component={Transfers} />
<Route path="/sharing" component={Sharing} />
<Route path="/trash" component={Trash} />