From 6bde10fe97bf6962e33b0cdd8e54ba0276c3ee96 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Tue, 21 Oct 2025 10:42:59 -0400 Subject: [PATCH 1/6] massive refactor of data loading in console mode --- backend/endpoints/responses/rom.py | 1 - backend/models/rom.py | 4 - .../__generated__/models/DetailedRomSchema.ts | 1 - .../__generated__/models/SimpleRomSchema.ts | 1 - frontend/src/components/Details/Title.vue | 6 +- .../AppBar/common/FilterDrawer/Base.vue | 4 +- .../Config/PlatformVersions.vue | 6 +- .../Settings/ServerStats/PlatformsStats.vue | 4 +- .../src/components/common/Game/Card/Base.vue | 2 +- .../components/common/Navigation/ScanBtn.vue | 2 +- frontend/src/console/Layout.vue | 31 +- .../src/console/components/BackButton.vue | 21 +- frontend/src/console/views/Game.vue | 2 +- frontend/src/console/views/GamesList.vue | 371 ++++++++++++------ frontend/src/console/views/Home.vue | 92 ++--- frontend/src/stores/console.ts | 28 ++ 16 files changed, 352 insertions(+), 224 deletions(-) diff --git a/backend/endpoints/responses/rom.py b/backend/endpoints/responses/rom.py index a744c6bd5..e8127c784 100644 --- a/backend/endpoints/responses/rom.py +++ b/backend/endpoints/responses/rom.py @@ -207,7 +207,6 @@ class RomSchema(BaseModel): platform_id: int platform_slug: str platform_fs_slug: str - platform_name: str platform_custom_name: str | None platform_display_name: str diff --git a/backend/models/rom.py b/backend/models/rom.py index 7d82de394..f1aff5d44 100644 --- a/backend/models/rom.py +++ b/backend/models/rom.py @@ -263,10 +263,6 @@ class Rom(BaseModel): def platform_fs_slug(self) -> str: return self.platform.fs_slug - @property - def platform_name(self) -> str: - return self.platform.name - @property def platform_custom_name(self) -> str | None: return self.platform.custom_name diff --git a/frontend/src/__generated__/models/DetailedRomSchema.ts b/frontend/src/__generated__/models/DetailedRomSchema.ts index f81d1278f..c99588ba8 100644 --- a/frontend/src/__generated__/models/DetailedRomSchema.ts +++ b/frontend/src/__generated__/models/DetailedRomSchema.ts @@ -34,7 +34,6 @@ export type DetailedRomSchema = { platform_id: number; platform_slug: string; platform_fs_slug: string; - platform_name: string; platform_custom_name: (string | null); platform_display_name: string; fs_name: string; diff --git a/frontend/src/__generated__/models/SimpleRomSchema.ts b/frontend/src/__generated__/models/SimpleRomSchema.ts index a3f976587..671f622ff 100644 --- a/frontend/src/__generated__/models/SimpleRomSchema.ts +++ b/frontend/src/__generated__/models/SimpleRomSchema.ts @@ -28,7 +28,6 @@ export type SimpleRomSchema = { platform_id: number; platform_slug: string; platform_fs_slug: string; - platform_name: string; platform_custom_name: (string | null); platform_display_name: string; fs_name: string; diff --git a/frontend/src/components/Details/Title.vue b/frontend/src/components/Details/Title.vue index ed2df4349..ad8be3962 100644 --- a/frontend/src/components/Details/Title.vue +++ b/frontend/src/components/Details/Title.vue @@ -20,7 +20,7 @@ const releaseDate = new Date( }); const platformsStore = storePlatforms(); -const { filteredPlatforms } = storeToRefs(platformsStore); +const { allPlatforms } = storeToRefs(platformsStore); const hashMatches = computed(() => { return [ @@ -81,7 +81,7 @@ const hashMatches = computed(() => { > { >("emitter"); const onFilterChange = debounce( @@ -305,7 +305,7 @@ onMounted(async () => { ); watch( - () => filteredPlatforms.value, + () => allPlatforms.value, async () => setFilters(), { immediate: true }, // Ensure watcher is triggered immediately ); diff --git a/frontend/src/components/Settings/LibraryManagement/Config/PlatformVersions.vue b/frontend/src/components/Settings/LibraryManagement/Config/PlatformVersions.vue index ab32d99d8..68d96a772 100644 --- a/frontend/src/components/Settings/LibraryManagement/Config/PlatformVersions.vue +++ b/frontend/src/components/Settings/LibraryManagement/Config/PlatformVersions.vue @@ -36,10 +36,8 @@ const editable = ref(false); />

- Versions of the same platform. A common example is Capcom Play System - 1 is an arcade system. Platform versions will let you setup a custom - platform for RomM to import and tell RomM which platform it needs to - scrape against. + Platform versions allow you to create custom platform entries for + games that belong to the same system but have different versions.

diff --git a/frontend/src/components/Settings/ServerStats/PlatformsStats.vue b/frontend/src/components/Settings/ServerStats/PlatformsStats.vue index 1d54e18a8..b71f2fafc 100644 --- a/frontend/src/components/Settings/ServerStats/PlatformsStats.vue +++ b/frontend/src/components/Settings/ServerStats/PlatformsStats.vue @@ -12,11 +12,11 @@ const props = defineProps<{ }>(); const { t } = useI18n(); const platformsStore = storePlatforms(); -const { filteredPlatforms } = storeToRefs(platformsStore); +const { allPlatforms } = storeToRefs(platformsStore); const orderBy = ref<"name" | "size" | "count">("name"); const sortedPlatforms = computed(() => { - const platforms = [...filteredPlatforms.value]; + const platforms = [...allPlatforms.value]; if (orderBy.value === "size") { return platforms.sort( (a, b) => Number(b.fs_size_bytes) - Number(a.fs_size_bytes), diff --git a/frontend/src/components/common/Game/Card/Base.vue b/frontend/src/components/common/Game/Card/Base.vue index a9d9a1c77..4a680a50c 100644 --- a/frontend/src/components/common/Game/Card/Base.vue +++ b/frontend/src/components/common/Game/Card/Base.vue @@ -311,7 +311,7 @@ onBeforeUnmount(() => { :key="rom.platform_slug" :size="25" :slug="rom.platform_slug" - :name="rom.platform_name" + :name="rom.platform_display_name" :fs-slug="rom.platform_fs_slug" class="ml-1" /> diff --git a/frontend/src/components/common/Navigation/ScanBtn.vue b/frontend/src/components/common/Navigation/ScanBtn.vue index 4b27e304f..b91181c20 100644 --- a/frontend/src/components/common/Navigation/ScanBtn.vue +++ b/frontend/src/components/common/Navigation/ScanBtn.vue @@ -87,7 +87,7 @@ socket.on("scan:scanning_rom", (rom: SimpleRom) => { // Add the platform if the socket dropped and it's missing if (!scannedPlatform) { scanningPlatforms.value.push({ - name: rom.platform_name, + name: rom.platform_display_name, slug: rom.platform_slug, id: rom.platform_id, fs_slug: rom.platform_fs_slug, diff --git a/frontend/src/console/Layout.vue b/frontend/src/console/Layout.vue index e97c32714..bb4754435 100644 --- a/frontend/src/console/Layout.vue +++ b/frontend/src/console/Layout.vue @@ -1,6 +1,6 @@ @@ -96,7 +99,7 @@ onMounted(() => { :class="{ '-translate-y-[2px] scale-[1.03] shadow-[0_8px_28px_rgba(0,0,0,0.35),_0_0_0_2px_var(--console-game-card-focus-border),_0_0_16px_var(--console-game-card-focus-border)]': selected, - 'w-[250px] shrink-0': isRecent, + 'w-[250px] shrink-0': continuePlaying, }" @click="emit('click')" @focus="emit('focus')" diff --git a/frontend/src/console/composables/useElementRegistry.ts b/frontend/src/console/composables/useElementRegistry.ts index 7d7464ee6..3420b906d 100644 --- a/frontend/src/console/composables/useElementRegistry.ts +++ b/frontend/src/console/composables/useElementRegistry.ts @@ -25,7 +25,7 @@ export function useElementRegistry() { // Create a shared registry instance for each section export const systemElementRegistry = useElementRegistry(); -export const recentElementRegistry = useElementRegistry(); +export const continuePlayingElementRegistry = useElementRegistry(); export const collectionElementRegistry = useElementRegistry(); export const smartCollectionElementRegistry = useElementRegistry(); export const virtualCollectionElementRegistry = useElementRegistry(); diff --git a/frontend/src/console/views/Home.vue b/frontend/src/console/views/Home.vue index 8c9bfd920..35d132788 100644 --- a/frontend/src/console/views/Home.vue +++ b/frontend/src/console/views/Home.vue @@ -7,6 +7,7 @@ import { nextTick, watch, useTemplateRef, + onBeforeMount, } from "vue"; import { useRouter } from "vue-router"; import RIsotipo from "@/components/common/RIsotipo.vue"; @@ -19,7 +20,7 @@ import SystemCard from "@/console/components/SystemCard.vue"; import useBackgroundArt from "@/console/composables/useBackgroundArt"; import { systemElementRegistry, - recentElementRegistry, + continuePlayingElementRegistry, collectionElementRegistry, smartCollectionElementRegistry, virtualCollectionElementRegistry, @@ -42,12 +43,12 @@ const collectionsStore = storeCollections(); const { allCollections, smartCollections, virtualCollections } = storeToRefs(collectionsStore); const romsStore = storeRoms(); -const { recentRoms } = storeToRefs(romsStore); +const { continuePlayingRoms } = storeToRefs(romsStore); const consoleStore = storeConsole(); const { navigationMode, platformIndex, - recentIndex, + continuePlayingIndex, collectionsIndex, smartCollectionsIndex, virtualCollectionsIndex, @@ -66,7 +67,9 @@ const scrollContainerRef = useTemplateRef( "scroll-container-ref", ); const platformsRef = useTemplateRef("platforms-ref"); -const recentRef = useTemplateRef("recent-ref"); +const continuePlayingRef = useTemplateRef( + "continue-playing-ref", +); const collectionsRef = useTemplateRef("collections-ref"); const smartCollectionsRef = useTemplateRef( "smart-collections-ref", @@ -74,7 +77,9 @@ const smartCollectionsRef = useTemplateRef( const virtualCollectionsRef = useTemplateRef( "virtual-collections-ref", ); -const recentSectionRef = useTemplateRef("recent-section-ref"); +const continuePlayingSectionRef = useTemplateRef( + "continue-playing-section-ref", +); const collectionsSectionRef = useTemplateRef( "collections-section-ref", ); @@ -86,7 +91,8 @@ const virtualCollectionsSectionRef = useTemplateRef( ); const systemElementAt = (i: number) => systemElementRegistry.getElement(i); -const recentElementAt = (i: number) => recentElementRegistry.getElement(i); +const continuePlayingElementAt = (i: number) => + continuePlayingElementRegistry.getElement(i); const collectionElementAt = (i: number) => collectionElementRegistry.getElement(i); const smartCollectionElementAt = (i: number) => @@ -100,10 +106,13 @@ const { moveLeft: moveSystemLeft, moveRight: moveSystemRight } = useSpatialNav( () => allPlatforms.value.length || 1, () => allPlatforms.value.length, ); -const { moveLeft: moveRecentLeft, moveRight: moveRecentRight } = useSpatialNav( - recentIndex, - () => recentRoms.value.length || 1, - () => recentRoms.value.length, +const { + moveLeft: moveContinuePlayingLeft, + moveRight: moveContinuePlayingRight, +} = useSpatialNav( + continuePlayingIndex, + () => continuePlayingRoms.value.length || 1, + () => continuePlayingRoms.value.length, ); const { moveLeft: moveCollectionLeft, moveRight: moveCollectionRight } = useSpatialNav( @@ -134,7 +143,7 @@ useRovingDom(platformIndex, systemElementAt, { behavior: "smooth", scroll: false, // handle scrolling manually }); -useRovingDom(recentIndex, recentElementAt, { +useRovingDom(continuePlayingIndex, continuePlayingElementAt, { inline: "center", block: "nearest", behavior: "smooth", @@ -169,11 +178,11 @@ watch(platformIndex, (newIdx) => { } }); -watch(recentIndex, (newIdx) => { +watch(continuePlayingIndex, (newIdx) => { if (!isVerticalScrolling) { - const el = recentElementAt(newIdx); - if (el && recentRef.value) { - centerInCarousel(recentRef.value, el, "smooth"); + const el = continuePlayingElementAt(newIdx); + if (el && continuePlayingRef.value) { + centerInCarousel(continuePlayingRef.value, el, "smooth"); } } }); @@ -231,27 +240,34 @@ const navigationFunctions = { return true; }, }, - recent: { + continuePlaying: { prev: () => { - const before = recentIndex.value; - moveRecentLeft(); - if (recentIndex.value === before) { - recentIndex.value = Math.max(0, recentRoms.value.length - 1); + const before = continuePlayingIndex.value; + moveContinuePlayingLeft(); + if (continuePlayingIndex.value === before) { + continuePlayingIndex.value = Math.max( + 0, + continuePlayingRoms.value.length - 1, + ); } }, next: () => { - const before = recentIndex.value; - moveRecentRight(); - if (recentIndex.value === before) { - recentIndex.value = 0; + const before = continuePlayingIndex.value; + moveContinuePlayingRight(); + if (continuePlayingIndex.value === before) { + continuePlayingIndex.value = 0; } }, confirm: () => { - if (!recentRoms.value[recentIndex.value]) return false; + if (!continuePlayingRoms.value[continuePlayingIndex.value]) return false; router.push({ name: ROUTES.CONSOLE_ROM, - params: { rom: recentRoms.value[recentIndex.value].id }, - query: { id: recentRoms.value[recentIndex.value].platform_id }, + params: { + rom: continuePlayingRoms.value[continuePlayingIndex.value].id, + }, + query: { + id: continuePlayingRoms.value[continuePlayingIndex.value].platform_id, + }, }); return true; }, @@ -367,8 +383,11 @@ function scrollToCurrentRow() { case "systems": scrollContainerRef.value?.scrollTo({ top: 0, behavior }); break; - case "recent": - recentSectionRef.value?.scrollIntoView({ behavior, block: "start" }); + case "continuePlaying": + continuePlayingSectionRef.value?.scrollIntoView({ + behavior, + block: "start", + }); break; case "collections": collectionsSectionRef.value?.scrollIntoView({ @@ -506,14 +525,14 @@ function handleAction(action: InputAction): boolean { navigationMode.value = "controls"; return true; } - if (currentMode === "recent") { + if (currentMode === "continuePlaying") { navigationMode.value = "systems"; scrollToCurrentRow(); return true; } if (currentMode === "collections") { navigationMode.value = - recentRoms.value.length > 0 ? "recent" : "systems"; + continuePlayingRoms.value.length > 0 ? "continuePlaying" : "systems"; scrollToCurrentRow(); return true; } @@ -521,8 +540,8 @@ function handleAction(action: InputAction): boolean { navigationMode.value = allCollections.value.length > 0 ? "collections" - : recentRoms.value.length > 0 - ? "recent" + : continuePlayingRoms.value.length > 0 + ? "continuePlaying" : "systems"; scrollToCurrentRow(); return true; @@ -533,8 +552,8 @@ function handleAction(action: InputAction): boolean { ? "smartCollections" : allCollections.value.length > 0 ? "collections" - : recentRoms.value.length > 0 - ? "recent" + : continuePlayingRoms.value.length > 0 + ? "continuePlaying" : "systems"; scrollToCurrentRow(); return true; @@ -544,8 +563,8 @@ function handleAction(action: InputAction): boolean { case "moveDown": if (currentMode === "systems") { navigationMode.value = - recentRoms.value.length > 0 - ? "recent" + continuePlayingRoms.value.length > 0 + ? "continuePlaying" : allCollections.value.length > 0 ? "collections" : smartCollections.value.length > 0 @@ -556,7 +575,7 @@ function handleAction(action: InputAction): boolean { scrollToCurrentRow(); return true; } - if (currentMode === "recent") { + if (currentMode === "continuePlaying") { navigationMode.value = allCollections.value.length > 0 ? "collections" @@ -606,8 +625,13 @@ function handleAction(action: InputAction): boolean { return true; case "toggleFavorite": - if (currentMode === "recent" && recentRoms.value[recentIndex.value]) { - toggleFavoriteComposable(recentRoms.value[recentIndex.value]); + if ( + currentMode === "continuePlaying" && + continuePlayingRoms.value[continuePlayingIndex.value] + ) { + toggleFavoriteComposable( + continuePlayingRoms.value[continuePlayingIndex.value], + ); return true; } return false; @@ -617,10 +641,15 @@ function handleAction(action: InputAction): boolean { } } +onBeforeMount(async () => { + await romsStore.fetchContinuePlayingRoms(); +}); + onMounted(async () => { // Restore indices within bounds if (platformIndex.value >= allPlatforms.value.length) platformIndex.value = 0; - if (recentIndex.value >= recentRoms.value.length) recentIndex.value = 0; + if (continuePlayingIndex.value >= continuePlayingRoms.value.length) + continuePlayingIndex.value = 0; if (collectionsIndex.value >= allCollections.value.length) collectionsIndex.value = 0; if (smartCollectionsIndex.value >= smartCollections.value.length) @@ -633,7 +662,10 @@ onMounted(async () => { // Center carousels centerInCarousel(platformsRef.value, systemElementAt(platformIndex.value)); - centerInCarousel(recentRef.value, recentElementAt(recentIndex.value)); + centerInCarousel( + continuePlayingRef.value, + continuePlayingElementAt(continuePlayingIndex.value), + ); centerInCarousel( collectionsRef.value, collectionElementAt(collectionsIndex.value), @@ -655,7 +687,7 @@ let off: (() => void) | null = null; onUnmounted(() => { consoleStore.setHomeState({ platformIndex: platformIndex.value, - recentIndex: recentIndex.value, + continuePlayingIndex: continuePlayingIndex.value, collectionsIndex: collectionsIndex.value, smartCollectionsIndex: smartCollectionsIndex.value, virtualCollectionsIndex: virtualCollectionsIndex.value, @@ -752,8 +784,8 @@ onUnmounted(() => {

{ border: `1px solid var(--console-home-carousel-button-border)`, color: 'var(--console-home-carousel-button-text)', }" - @click="navigationFunctions.recent.prev" + @click="navigationFunctions.continuePlaying.prev" > ◀ @@ -781,26 +813,29 @@ onUnmounted(() => { border: `1px solid var(--console-home-carousel-button-border)`, color: 'var(--console-home-carousel-button-text)', }" - @click="navigationFunctions.recent.next" + @click="navigationFunctions.continuePlaying.next" > ▶
@@ -1042,7 +1077,7 @@ onUnmounted(() => {
diff --git a/frontend/src/stores/console.ts b/frontend/src/stores/console.ts index 28016d1bb..8bf0c9edd 100644 --- a/frontend/src/stores/console.ts +++ b/frontend/src/stores/console.ts @@ -3,7 +3,7 @@ import { ROUTES } from "@/plugins/router"; export type NavigationMode = | "systems" - | "recent" + | "continuePlaying" | "collections" | "smartCollections" | "virtualCollections" @@ -12,7 +12,7 @@ export type NavigationMode = export default defineStore("console", { state: () => ({ platformIndex: 0, - recentIndex: 0, + continuePlayingIndex: 0, collectionsIndex: 0, smartCollectionsIndex: 0, virtualCollectionsIndex: 0, @@ -45,7 +45,7 @@ export default defineStore("console", { actions: { setHomeState(payload: { platformIndex?: number; - recentIndex?: number; + continuePlayingIndex?: number; collectionsIndex?: number; smartCollectionsIndex?: number; virtualCollectionsIndex?: number; @@ -54,8 +54,8 @@ export default defineStore("console", { }) { if (payload.platformIndex !== undefined) this.platformIndex = payload.platformIndex; - if (payload.recentIndex !== undefined) - this.recentIndex = payload.recentIndex; + if (payload.continuePlayingIndex !== undefined) + this.continuePlayingIndex = payload.continuePlayingIndex; if (payload.collectionsIndex !== undefined) this.collectionsIndex = payload.collectionsIndex; if (payload.smartCollectionsIndex !== undefined) From e26f1d2bcf4da4b5cb1bd7af3f85e7acad56298a Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Tue, 21 Oct 2025 11:13:15 -0400 Subject: [PATCH 4/6] fix scan page --- backend/endpoints/sockets/scan.py | 2 +- .../Settings/ServerStats/PlatformsStats.vue | 12 ++++++------ .../src/components/common/Navigation/ScanBtn.vue | 10 +++++----- frontend/src/stores/scanning.ts | 12 ++++-------- frontend/src/views/Scan.vue | 5 +++-- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/backend/endpoints/sockets/scan.py b/backend/endpoints/sockets/scan.py index 9610a85ae..8a15e5aac 100644 --- a/backend/endpoints/sockets/scan.py +++ b/backend/endpoints/sockets/scan.py @@ -379,7 +379,7 @@ async def _identify_platform( await socket_manager.emit( "scan:scanning_platform", PlatformSchema.model_validate(platform).model_dump( - include={"id", "name", "slug", "fs_slug", "is_identified"} + include={"id", "name", "display_name", "slug", "fs_slug", "is_identified"} ), ) await socket_manager.emit("", None) diff --git a/frontend/src/components/Settings/ServerStats/PlatformsStats.vue b/frontend/src/components/Settings/ServerStats/PlatformsStats.vue index b71f2fafc..42a3657bd 100644 --- a/frontend/src/components/Settings/ServerStats/PlatformsStats.vue +++ b/frontend/src/components/Settings/ServerStats/PlatformsStats.vue @@ -16,18 +16,18 @@ const { allPlatforms } = storeToRefs(platformsStore); const orderBy = ref<"name" | "size" | "count">("name"); const sortedPlatforms = computed(() => { - const platforms = [...allPlatforms.value]; if (orderBy.value === "size") { - return platforms.sort( + return allPlatforms.value.sort( (a, b) => Number(b.fs_size_bytes) - Number(a.fs_size_bytes), ); } if (orderBy.value === "count") { - return platforms.sort((a, b) => b.rom_count - a.rom_count); + return allPlatforms.value.sort((a, b) => b.rom_count - a.rom_count); } - // Default to name - return platforms.sort((a, b) => - a.name.localeCompare(b.name, undefined, { sensitivity: "base" }), + return allPlatforms.value.sort((a, b) => + a.display_name.localeCompare(b.display_name, undefined, { + sensitivity: "base", + }), ); }); diff --git a/frontend/src/components/common/Navigation/ScanBtn.vue b/frontend/src/components/common/Navigation/ScanBtn.vue index b91181c20..864d2c991 100644 --- a/frontend/src/components/common/Navigation/ScanBtn.vue +++ b/frontend/src/components/common/Navigation/ScanBtn.vue @@ -37,13 +37,13 @@ if (!socket.connected) socket.connect(); socket.on( "scan:scanning_platform", ({ - name, + display_name, slug, id, fs_slug, is_identified, }: { - name: string; + display_name: string; slug: string; id: number; fs_slug: string; @@ -51,10 +51,10 @@ socket.on( }) => { scanningStore.set(true); scanningPlatforms.value = scanningPlatforms.value.filter( - (platform) => platform.name !== name, + (platform) => platform.display_name !== display_name, ); scanningPlatforms.value.push({ - name, + display_name, slug, id, fs_slug, @@ -87,7 +87,7 @@ socket.on("scan:scanning_rom", (rom: SimpleRom) => { // Add the platform if the socket dropped and it's missing if (!scannedPlatform) { scanningPlatforms.value.push({ - name: rom.platform_display_name, + display_name: rom.platform_display_name, slug: rom.platform_slug, id: rom.platform_id, fs_slug: rom.platform_fs_slug, diff --git a/frontend/src/stores/scanning.ts b/frontend/src/stores/scanning.ts index ee0ba694c..2836684d2 100644 --- a/frontend/src/stores/scanning.ts +++ b/frontend/src/stores/scanning.ts @@ -1,19 +1,15 @@ import { defineStore } from "pinia"; import type { SimpleRom } from "@/stores/roms"; +import type { Platform } from "./platforms"; -interface ScanningPlatforms { - name: string; - slug: string; - fs_slug: string; - id: number; - is_identified: boolean; +interface ScanningPlatform extends Partial { roms: SimpleRom[]; } export default defineStore("scanning", { state: () => ({ scanning: false, - scanningPlatforms: [] as ScanningPlatforms[], + scanningPlatforms: [] as ScanningPlatform[], scanStats: { scanned_platforms: 0, new_platforms: 0, @@ -30,7 +26,7 @@ export default defineStore("scanning", { }, reset() { this.scanning = false; - this.scanningPlatforms = [] as ScanningPlatforms[]; + this.scanningPlatforms = [] as ScanningPlatform[]; this.scanStats = { scanned_platforms: 0, new_platforms: 0, diff --git a/frontend/src/views/Scan.vue b/frontend/src/views/Scan.vue index da1786319..62e6e9226 100644 --- a/frontend/src/views/Scan.vue +++ b/frontend/src/views/Scan.vue @@ -341,13 +341,14 @@ async function stopScan() { - {{ platform.name }} + {{ platform.display_name }}