diff --git a/src/lib/components/VideoPlayer/TmdbVideoPlayerModal.svelte b/src/lib/components/VideoPlayer/TmdbVideoPlayerModal.svelte
index 9631654..15f80c1 100644
--- a/src/lib/components/VideoPlayer/TmdbVideoPlayerModal.svelte
+++ b/src/lib/components/VideoPlayer/TmdbVideoPlayerModal.svelte
@@ -228,7 +228,7 @@
} else {
movieUserDataStore.refresh(tmdbId);
}
- libraryItemsDataStore.refresh();
+ libraryItemsDataStore.refreshIn(1500);
});
});
diff --git a/src/lib/pages/MoviesHomePage.svelte b/src/lib/pages/MoviesHomePage.svelte
index a66d494..b0e04eb 100644
--- a/src/lib/pages/MoviesHomePage.svelte
+++ b/src/lib/pages/MoviesHomePage.svelte
@@ -15,7 +15,9 @@
const libraryContinueWatching = derived(libraryData, (libraryData) => {
if (!libraryData) return [];
- const movies = libraryData.filter((i) => i.mediaType === 'Movie' && i.playStates?.length);
+ const movies = libraryData.filter(
+ (i) => i.mediaType === 'Movie' && i.playStates?.length && !i.watched
+ );
movies.sort((a, b) => {
const aMax = Math.max(
@@ -30,6 +32,7 @@
return movies.map((i) => i.metadata);
});
+ $: libraryContinueWatchingKey = $libraryContinueWatching && Symbol();
const popularMovies = tmdbApi.getPopularMovies();
@@ -92,9 +95,11 @@
{#if $libraryContinueWatching.length}
Continue Watching
- {#each $libraryContinueWatching as item}
-
- {/each}
+ {#key libraryContinueWatchingKey}
+ {#each $libraryContinueWatching as item (item.id)}
+
+ {/each}
+ {/key}
{/if}
diff --git a/src/lib/pages/SeriesHomePage.svelte b/src/lib/pages/SeriesHomePage.svelte
index fd83bfe..cb4ced7 100644
--- a/src/lib/pages/SeriesHomePage.svelte
+++ b/src/lib/pages/SeriesHomePage.svelte
@@ -17,7 +17,9 @@
const libraryContinueWatching = derived(libraryData, (libraryData) => {
if (!libraryData) return [];
- const series = libraryData.filter((i) => i.mediaType === 'Series' && i.playStates?.length);
+ const series = libraryData.filter(
+ (i) => i.mediaType === 'Series' && i.playStates?.length && !i.watched
+ );
series.sort((a, b) => {
const aMax = Math.max(
@@ -32,6 +34,7 @@
return series.map((i) => i.metadata);
});
+ $: libraryContinueWatchingKey = $libraryContinueWatching && Symbol();
const nowStreaming = getNowStreaming();
const upcomingSeries = fetchUpcomingSeries();
@@ -86,9 +89,11 @@
{#if $libraryContinueWatching.length}
Continue Watching
- {#each $libraryContinueWatching as item}
-
- {/each}
+ {#key libraryContinueWatchingKey}
+ {#each $libraryContinueWatching as item (item.id)}
+
+ {/each}
+ {/key}
{/if}
diff --git a/src/lib/stores/data.store.ts b/src/lib/stores/data.store.ts
index e88c81e..239d7d6 100644
--- a/src/lib/stores/data.store.ts
+++ b/src/lib/stores/data.store.ts
@@ -28,7 +28,7 @@ export function useRequest(fn: () => Promise) {
}
let updateTimeout: NodeJS.Timeout;
- function refreshIn(ms = 1000) {
+ function refreshIn(ms = 1500) {
return new Promise((resolve) => {
clearTimeout(updateTimeout);
updateTimeout = setTimeout(() => {
@@ -97,10 +97,19 @@ export function useRequestsStore, TResponse>(
}
};
+ const refreshIn = async (ms: number, ...args: TArgs) => {
+ const request = requests.get(JSON.stringify(args))?.request;
+
+ if (request) {
+ return request.refreshIn(ms);
+ }
+ };
+
return {
subscribe,
get: _get,
- refresh
+ refresh,
+ refreshIn
};
}
diff --git a/src/lib/stores/media-user-data.store.ts b/src/lib/stores/media-user-data.store.ts
index d6bfd36..c883575 100644
--- a/src/lib/stores/media-user-data.store.ts
+++ b/src/lib/stores/media-user-data.store.ts
@@ -116,7 +116,7 @@ function useUserLibrary(
.then((r) => r.data.success);
if (success) {
inLibrary.set(true);
- libraryItemsDataStore.refresh();
+ libraryItemsDataStore.refreshIn(1500);
}
}
@@ -133,7 +133,7 @@ function useUserLibrary(
.then((r) => r.data.success);
if (success) {
inLibrary.set(false);
- libraryItemsDataStore.refresh();
+ libraryItemsDataStore.refreshIn(1500);
}
}
@@ -164,7 +164,7 @@ function useIsWatched(
return toggleFn(userId, !watched)
.then(async (r) => {
- await libraryItemsDataStore.refresh();
+ await libraryItemsDataStore.refreshIn(1500);
return r;
})
.finally(() => {
@@ -255,7 +255,7 @@ export function useSeriesUserData(tmdbId: string) {
})
.then(async (states) => {
await seriesUserDataStore.refresh(tmdbId);
- await libraryItemsDataStore.refresh();
+ await libraryItemsDataStore.refreshIn(1500);
return states;
});
}