diff --git a/backend/main.py b/backend/main.py index a106ac158..177166d98 100644 --- a/backend/main.py +++ b/backend/main.py @@ -45,10 +45,10 @@ async def scan(sid, platforms: str, complete_rescan: bool=True): platforms: list[str] = json.loads(platforms) if len(json.loads(platforms)) > 0 else fs_platforms log.info(f"Platforms to be scanned: {', '.join(platforms)}") for platform in platforms: - await app.sio.emit('scanning_platform', platform) - await app.sio.emit('') # Workaround to emit in real-time log.info(emoji.emojize(f":video_game: {platform} {COLORS['reset']}")) scanned_platform: Platform = fastapi.scan_platform(platform) + await app.sio.emit('scanning_platform', [scanned_platform.name, scanned_platform.slug]) + await app.sio.emit('') # Workaround to emit in real-time if platform != str(scanned_platform): log.info(f"Identified as {COLORS['blue']}{scanned_platform}{COLORS['reset']}") dbh.add_platform(scanned_platform) @@ -80,5 +80,5 @@ def startup() -> None: if __name__ == '__main__': - uvicorn.run("main:app", host=DEV_HOST, port=DEV_PORT, reload=True) - # uvicorn.run("main:app", host=DEV_HOST, port=DEV_PORT, reload=False, workers=2) + # uvicorn.run("main:app", host=DEV_HOST, port=DEV_PORT, reload=True) + uvicorn.run("main:app", host=DEV_HOST, port=DEV_PORT, reload=False, workers=2) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 26b7c21d1..80895729d 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -44,7 +44,8 @@ onMounted(() => { - + + diff --git a/frontend/src/views/library/Scan.vue b/frontend/src/views/library/Scan.vue index 83eab1d1e..079b6cc9d 100644 --- a/frontend/src/views/library/Scan.vue +++ b/frontend/src/views/library/Scan.vue @@ -9,21 +9,23 @@ const platforms = storePlatforms() const platformsToScan = ref([]) const scanning = storeScanning() const scanningPlatform = ref("") -const scannedRoms = ref([]) +const scannedPlatforms = ref([]) const completeRescan = ref(false) + // Event listeners bus const emitter = inject('emitter') // Functions async function scan() { scanning.set(true); + scannedPlatforms.value = [] const socket = io({ path: '/ws/socket.io/', transports: ['websocket', 'polling'] }) - socket.on("scanning_platform", (platform) => { scanningPlatform.value = platform }) - socket.on("scanning_rom", (rom) => { scannedRoms.value.push(rom) }) + socket.on("scanning_platform", (platform) => { scannedPlatforms.value.push({'p_name': platform[0], 'p_slug': platform[1], 'r': []}); scanningPlatform.value = platform[1] }) + socket.on("scanning_rom", (r) => { scannedPlatforms.value.forEach(e => { if(e['p_slug'] == scanningPlatform.value){ e['r'].push(r) } }) }) socket.on("done", () => { scanning.set(false); - // emitter.emit('refresh') + emitter.emit('refresh') emitter.emit('snackbarScan', {'msg': "Scan completed successfully!", 'icon': 'mdi-check-bold', 'color': 'green'}) socket.close() }) @@ -76,14 +78,11 @@ async function scan() { - - - - {{ scanningPlatform }} - - - - {{ rom }} - + + + + {{ d['p_name'] }} + - {{ r }}