diff --git a/client/src/App.svelte b/client/src/App.svelte
index 76b482c..351992d 100644
--- a/client/src/App.svelte
+++ b/client/src/App.svelte
@@ -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;
+ }
+ };
});
@@ -45,6 +103,7 @@
Tv Shows
+
+
+