From fb49f653f8f452ab96c58413178cce54292e51aa Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Mon, 14 Aug 2023 18:12:31 -0400 Subject: [PATCH] Hotfix downloading multi-files --- frontend/src/services/api.js | 15 +++++++++++---- frontend/vite.config.js | 9 ++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/frontend/src/services/api.js b/frontend/src/services/api.js index c66189a93..209c87b3a 100644 --- a/frontend/src/services/api.js +++ b/frontend/src/services/api.js @@ -21,14 +21,16 @@ export async function fetchRomApi(platform, rom) { return axios.get(`/api/platforms/${platform}/roms/${rom}`); } -// Listen for multi-file download completion events -socket.on("download:complete", ({ id }) => { +function clearRomFromDownloads({ id }) { const downloadStore = useDownloadStore(); - useDownloadStore().remove(id); + downloadStore.remove(id); // Disconnect socket when no more downloads are in progress if (downloadStore.value.length === 0) socket.disconnect(); -}); +} + +// Listen for multi-file download completion events +socket.on("download:complete", clearRomFromDownloads); // Used only for multi-file downloads export async function downloadRomApi(rom, files) { @@ -46,6 +48,11 @@ export async function downloadRomApi(rom, files) { if (!socket.connected) socket.connect(); useDownloadStore().add(rom.id); + + // Clear download state after 60 seconds in case error/timeout + setTimeout(() => { + clearRomFromDownloads(rom); + }, 60 * 1000); } export async function updateRomApi(rom, updatedData, renameAsIGDB) { diff --git a/frontend/vite.config.js b/frontend/vite.config.js index ea614a4ef..50101f4c2 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -41,12 +41,15 @@ export default defineConfig(({ mode }) => { ], }, workbox: { - globPatterns: ['**/*.{js,css,html,ico,png,svg}'], - navigateFallbackDenylist: [/^\/assets\/romm\/library/], + globPatterns: ["**/*.{js,css,html,ico,png,svg}"], + navigateFallbackDenylist: [ + /\/assets\/romm\/library/, + /\/api\/platforms\/.*\/roms\/.*\/download/, + ], }, devOptions: { enabled: false, - type: 'module', + type: "module", }, }), ],