feat(tv): Sürüm tabanlı yenileme ile ayrıntılı TV şov yeniden tarama desteği eklendi
Daha güvenilir güncellemeler için sayım tabanlı depolama yerine sürüm tabanlı yenileme mekanizması kullanıldı. Belirli TV kök dizinlerini hedeflemeyi ve seçici önbellek temizlemeyi desteklemek için medya yeniden tarama sistemi geliştirildi. Yalnızca etkilenen dizinler için yeniden taramaları tetiklemek üzere çöp kutusu işlemleri iyileştirildi, böylece gereksiz işleme azaltıldı.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
import { onMount, tick } from "svelte";
|
||||
import { API, apiFetch } from "../utils/api.js";
|
||||
import { cleanFileName } from "../utils/filename.js";
|
||||
import { tvShowCount } from "../stores/tvStore.js";
|
||||
import { tvShowRefreshVersion } from "../stores/tvStore.js";
|
||||
import {
|
||||
activeSearchTerm,
|
||||
setSearchScope
|
||||
@@ -14,8 +14,7 @@
|
||||
let rescanning = false;
|
||||
let error = null;
|
||||
let mounted = false;
|
||||
let lastLoadedCount = null;
|
||||
let unsubscribeCount = null;
|
||||
let unsubscribeVersion = null;
|
||||
|
||||
let selectedShow = null;
|
||||
let selectedSeason = null;
|
||||
@@ -191,13 +190,9 @@ let filteredShows = [];
|
||||
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
|
||||
const list = await resp.json();
|
||||
shows = Array.isArray(list) ? list.map(normalizeShow) : [];
|
||||
tvShowCount.set(shows.length);
|
||||
lastLoadedCount = shows.length;
|
||||
} catch (err) {
|
||||
error = err?.message || "TV dizileri alınamadı.";
|
||||
shows = [];
|
||||
tvShowCount.set(0);
|
||||
lastLoadedCount = 0;
|
||||
} finally {
|
||||
loading = false;
|
||||
}
|
||||
@@ -259,15 +254,15 @@ let filteredShows = [];
|
||||
onMount(() => {
|
||||
mounted = true;
|
||||
loadShows();
|
||||
unsubscribeCount = tvShowCount.subscribe((val) => {
|
||||
unsubscribeVersion = tvShowRefreshVersion.subscribe((ver) => {
|
||||
if (!mounted) return;
|
||||
if (loading || refreshing || rescanning) return;
|
||||
if (val === lastLoadedCount) return;
|
||||
if (ver === null) return;
|
||||
loadShows();
|
||||
});
|
||||
return () => {
|
||||
mounted = false;
|
||||
unsubscribeCount && unsubscribeCount();
|
||||
unsubscribeVersion && unsubscribeVersion();
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ import { writable } from "svelte/store";
|
||||
import { apiFetch } from "../utils/api.js";
|
||||
|
||||
export const tvShowCount = writable(0);
|
||||
export const tvShowRefreshVersion = writable(0);
|
||||
|
||||
let requestSeq = 0;
|
||||
let lastValue = 0;
|
||||
let zeroTimer = null;
|
||||
@@ -35,6 +37,7 @@ export async function refreshTvShowCount() {
|
||||
lastValue = 0;
|
||||
tvShowCount.set(0);
|
||||
}
|
||||
tvShowRefreshVersion.update((v) => v + 1);
|
||||
} catch (err) {
|
||||
console.warn("⚠️ TV show count güncellenemedi:", err?.message || err);
|
||||
// Hata durumunda mevcut değeri koru, titreşimi önle
|
||||
|
||||
Reference in New Issue
Block a user