diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 16d35b7..9cef609 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -9,6 +9,7 @@
let gameId = $state(null);
let filterGenre = $state("");
let filterYear = $state("");
+ let uploadTriggered = $state(0);
function parseHash() {
const hash = window.location.hash.slice(1) || "/";
@@ -42,11 +43,11 @@
});
-
+ uploadTriggered++} />
{#if route === "/"}
-
+
{:else if route === "/game" && gameId}
{:else if route === "/play" && gameId}
diff --git a/frontend/src/lib/Header.svelte b/frontend/src/lib/Header.svelte
index cc333d2..a6840c3 100644
--- a/frontend/src/lib/Header.svelte
+++ b/frontend/src/lib/Header.svelte
@@ -1,10 +1,10 @@
diff --git a/frontend/src/pages/Library.svelte b/frontend/src/pages/Library.svelte
index 6fe488e..372232b 100644
--- a/frontend/src/pages/Library.svelte
+++ b/frontend/src/pages/Library.svelte
@@ -2,7 +2,7 @@
import { listGames, uploadGame, searchIGDB } from "../lib/api.js";
import GameCard from "../lib/GameCard.svelte";
- let { genreFilter = "", yearFilter = "" } = $props();
+ let { genreFilter = "", yearFilter = "", uploadTriggered = 0 } = $props();
let games = $state([]);
let loading = $state(true);
@@ -28,6 +28,11 @@
let fileInput;
+ // When header upload button is clicked, trigger the hidden file input
+ $effect(() => {
+ if (uploadTriggered > 0) fileInput?.click();
+ });
+
// Derive filter options from the loaded games
let filterOptions = $derived.by(() => {
const years = {};
@@ -47,7 +52,7 @@
.sort((a, b) => Number(b.label) - Number(a.label)),
genres: Object.entries(genres)
.map(([label, count]) => ({ label, count }))
- .sort((a, b) => a.label.localeCompare(b.label)),
+ .sort((a, b) => b.count - a.count),
};
});
@@ -201,12 +206,21 @@