From 0de780b7c920b68b178ab85904b6dd3a85579f33 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Thu, 11 Dec 2025 16:05:31 -0800 Subject: [PATCH] Make game versions update every 10 minutes via server-side route (#4892) --- .../src/plugins/update-game-versions.ts | 17 +++++++++++++++++ .../src/server/routes/api/tags/game-versions.ts | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 apps/frontend/src/plugins/update-game-versions.ts create mode 100644 apps/frontend/src/server/routes/api/tags/game-versions.ts diff --git a/apps/frontend/src/plugins/update-game-versions.ts b/apps/frontend/src/plugins/update-game-versions.ts new file mode 100644 index 00000000..5ded4362 --- /dev/null +++ b/apps/frontend/src/plugins/update-game-versions.ts @@ -0,0 +1,17 @@ +import type { Labrinth } from '@modrinth/api-client' + +export default defineNuxtPlugin(async () => { + try { + const gameVersions = await $fetch('/api/tags/game-versions') + + if (gameVersions && gameVersions.length > 0) { + const state = useState<{ gameVersions: Labrinth.Tags.v2.GameVersion[] }>('generatedState') + + if (state.value) { + state.value.gameVersions = gameVersions + } + } + } catch (error) { + console.error('[Game Version Updater] Failed to fetch:', error) + } +}) diff --git a/apps/frontend/src/server/routes/api/tags/game-versions.ts b/apps/frontend/src/server/routes/api/tags/game-versions.ts new file mode 100644 index 00000000..71d0e716 --- /dev/null +++ b/apps/frontend/src/server/routes/api/tags/game-versions.ts @@ -0,0 +1,17 @@ +import type { Labrinth } from '@modrinth/api-client' + +const CACHE_MAX_AGE = 60 * 10 // 10 minutes + +export default defineCachedEventHandler( + async (event) => { + const config = useRuntimeConfig(event) + const apiBaseUrl = config.apiBaseUrl || config.public.apiBaseUrl + + return await $fetch(`${apiBaseUrl}tag/game_version`) + }, + { + maxAge: CACHE_MAX_AGE, + name: 'game-versions', + getKey: () => 'game-versions', + }, +)