TVDB özelliği eklendi.
This commit is contained in:
@@ -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} />
|
||||
|
||||
Reference in New Issue
Block a user