diff --git a/frontend/src/components/common/Game/Dialog/EditRom.vue b/frontend/src/components/common/Game/Dialog/EditRom.vue index 39b6e6473..3e6377401 100644 --- a/frontend/src/components/common/Game/Dialog/EditRom.vue +++ b/frontend/src/components/common/Game/Dialog/EditRom.vue @@ -8,7 +8,7 @@ import GameCard from "@/components/common/Game/Card/Base.vue"; import RDialog from "@/components/common/RDialog.vue"; import romApi, { type UpdateRom } from "@/services/api/rom"; import storeHeartbeat from "@/stores/heartbeat"; -import storeRoms, { type SimpleRom } from "@/stores/roms"; +import storeRoms, { type DetailedRom, type SimpleRom } from "@/stores/roms"; import storeUpload from "@/stores/upload"; import type { Events } from "@/types/emitter"; import { formatBytes } from "@/utils"; @@ -33,9 +33,12 @@ const validForm = ref(false); const showConfirmDeleteManual = ref(false); const emitter = inject>("emitter"); +// `files` only ships on DetailedRom; `rom` is reassigned to the detailed +// payload returned by the update/refresh API calls. Mirror the cast used +// by `getNintendoDSFiles` in utils. const soundtrackTracks = computed( () => - rom.value?.files + (rom.value as DetailedRom | null)?.files ?.filter((f) => f.category === "soundtrack") .slice() .sort((a, b) => a.file_name.localeCompare(b.file_name)) ?? [], diff --git a/frontend/src/components/common/Game/Dialog/ShowQRCode.vue b/frontend/src/components/common/Game/Dialog/ShowQRCode.vue index fb1de65b6..59ebf7353 100644 --- a/frontend/src/components/common/Game/Dialog/ShowQRCode.vue +++ b/frontend/src/components/common/Game/Dialog/ShowQRCode.vue @@ -4,16 +4,16 @@ import qrcode from "qrcode"; import { inject, nextTick, ref } from "vue"; import { useDisplay } from "vuetify"; import RDialog from "@/components/common/RDialog.vue"; -import type { DetailedRom } from "@/stores/roms"; +import type { SimpleRom } from "@/stores/roms"; import type { Events } from "@/types/emitter"; import { getNintendoDSFiles, getDownloadLink, isNintendoDSFile } from "@/utils"; const { lgAndUp } = useDisplay(); const show = ref(false); const emitter = inject>("emitter"); -const rom = ref({} as DetailedRom); +const rom = ref({} as SimpleRom); -emitter?.on("showQRCodeDialog", async (romToView: DetailedRom) => { +emitter?.on("showQRCodeDialog", async (romToView: SimpleRom) => { show.value = true; rom.value = romToView; diff --git a/frontend/src/types/emitter.d.ts b/frontend/src/types/emitter.d.ts index c79f3c826..0031b827b 100644 --- a/frontend/src/types/emitter.d.ts +++ b/frontend/src/types/emitter.d.ts @@ -90,7 +90,10 @@ export type Events = { filterRoms: null; firmwareDrawerShow: null; sortBarShow: null; - showQRCodeDialog: DetailedRom; + // The QR dialog only reads SimpleRom fields (name, fs_name, extension) + // and the NDS/download helpers all accept SimpleRom, so gallery surfaces + // (which only ever hold SimpleRom) can trigger it too. + showQRCodeDialog: SimpleRom; selectSaveDialog: DetailedRom; selectStateDialog: DetailedRom; saveSelected: SaveSchema; diff --git a/frontend/src/v2/components/Gallery/GameListRow.vue b/frontend/src/v2/components/Gallery/GameListRow.vue index 99f320dba..596f8b7b4 100644 --- a/frontend/src/v2/components/Gallery/GameListRow.vue +++ b/frontend/src/v2/components/Gallery/GameListRow.vue @@ -348,7 +348,6 @@ onBeforeUnmount(() => { v-for="provider in providers" :key="provider.key" class="game-list-row__provider" - :title="provider.title" :style="provider.bg ? { background: provider.bg } : undefined" > { width="14" height="14" /> + diff --git a/frontend/src/v2/components/GameCard/GameCardSkeleton.vue b/frontend/src/v2/components/GameCard/GameCardSkeleton.vue index 06db2893c..bd88fb0bc 100644 --- a/frontend/src/v2/components/GameCard/GameCardSkeleton.vue +++ b/frontend/src/v2/components/GameCard/GameCardSkeleton.vue @@ -41,10 +41,7 @@ const artHeight = computed(() =>