diff --git a/web/src/lib/components/stats/stat-cards.svelte b/web/src/lib/components/stats/stat-cards.svelte
index 5e50223..38b1acc 100644
--- a/web/src/lib/components/stats/stat-cards.svelte
+++ b/web/src/lib/components/stats/stat-cards.svelte
@@ -5,6 +5,7 @@
import { isSemver, semverIsGreater } from '$lib/utils.ts';
import { env } from '$env/dynamic/public';
import { animate } from 'animejs';
+ import { resolve } from '$app/paths';
let moviesCount: string | null = $state(null);
let episodeCount: string | null = $state(null);
@@ -14,6 +15,9 @@
let releaseUrl: string | null = $state(null);
let newestVersion: string | null = $state(null);
+ let importablesShowsCount: number = $state(0);
+ let importablesMoviesCount: number = $state(0);
+
// Elements to animate
let showEl: HTMLSpanElement;
let episodeEl: HTMLSpanElement;
@@ -70,6 +74,15 @@
newestVersion = latestRelease.tag_name.toString().replace(/v*/, '');
releaseUrl = latestRelease.html_url;
}
+
+ let importableShows = await client.GET('/api/v1/tv/importable');
+ if (!importableShows.error) {
+ importablesShowsCount = importableShows.data.length;
+ }
+ let importableMovies = await client.GET('/api/v1/movies/importable');
+ if (!importableMovies.error) {
+ importablesMoviesCount = importableMovies.data.length;
+ }
});
@@ -94,6 +107,29 @@
{torrentCount ?? 'Error'}
+ {#if importablesShowsCount > 0}
+
+ {/if}
+ {#if importablesMoviesCount > 0}
+
+ {/if}
{#if semverIsGreater(newestVersion ?? '', installedVersion ?? '') || !isSemver(installedVersion ?? '')}
diff --git a/web/src/routes/dashboard/movies/+page.svelte b/web/src/routes/dashboard/movies/+page.svelte
index 8eee4ca..5a2e5f3 100644
--- a/web/src/routes/dashboard/movies/+page.svelte
+++ b/web/src/routes/dashboard/movies/+page.svelte
@@ -10,8 +10,8 @@
import { page } from '$app/state';
import ImportCandidatesDialog from '$lib/components/import-media/import-candidates-dialog.svelte';
import DetectedMediaCard from '$lib/components/import-media/detected-media-card.svelte';
- let movies: components['schemas']['PublicMovie'][] = page.data.movies;
- let importables = page.data.importable;
+ let movies: components['schemas']['PublicMovie'][] = $derived(page.data.movies);
+ let importables = $derived(page.data.importable);
diff --git a/web/src/routes/dashboard/tv/+page.svelte b/web/src/routes/dashboard/tv/+page.svelte
index 8c1b8e8..4ea0847 100644
--- a/web/src/routes/dashboard/tv/+page.svelte
+++ b/web/src/routes/dashboard/tv/+page.svelte
@@ -10,8 +10,8 @@
import ImportCandidatesDialog from '$lib/components/import-media/import-candidates-dialog.svelte';
import DetectedMediaCard from '$lib/components/import-media/detected-media-card.svelte';
- let tvShows = $state(page.data.tvShows);
- let importables = $state(page.data.importable);
+ let tvShows = $derived(page.data.tvShows);
+ let importables = $derived(page.data.importable);