From 2e8b8bd65f82f9ced3c1cd83dc8c208664fd01c3 Mon Sep 17 00:00:00 2001 From: Yeicor <4929005+Yeicor@users.noreply.github.com> Date: Tue, 5 Aug 2025 22:48:58 +0200 Subject: [PATCH] Fix uploading multiple models when sharing links --- frontend/tools/PlaygroundDialogContent.vue | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/tools/PlaygroundDialogContent.vue b/frontend/tools/PlaygroundDialogContent.vue index 720f47e..8eb0365 100644 --- a/frontend/tools/PlaygroundDialogContent.vue +++ b/frontend/tools/PlaygroundDialogContent.vue @@ -165,13 +165,21 @@ function resetWorker(loadSnapshot: Uint8Array | undefined = undefined) { setupPyodide(false, loadSnapshot); // Reinitialize Pyodide } -function shareLinkCommon(added: Record, forgotten: Array) { +function shareLinkCommon(added: Record | string>, forgotten: Array) { const baseUrl = window.location const searchParams = new URLSearchParams(baseUrl.search); for (const k of forgotten) searchParams.delete(k); const hashParams = new URLSearchParams(baseUrl.hash.slice(1)); // Keep all previous URL parameters for (const k of forgotten) hashParams.delete(k); - for (const k in added) hashParams.append(k, added[k]); // Prefer hash to GET + for (const k in added) { + if (Array.isArray(added[k])) { + for (const v of added[k]) { + hashParams.append(k, v); // Prefer hash to GET + } + } else if (typeof added[k] === 'string') { + hashParams.set(k, added[k]); // Prefer hash to GET + } + } const shareUrl = `${baseUrl.origin}${baseUrl.pathname}?${searchParams}#${hashParams}`; output(`Share link ready: ${shareUrl}\n`) if (navigator.clipboard?.writeText === undefined) { @@ -200,9 +208,11 @@ async function uploadAndShareLink() { }; // Upload all models + newParams['preload'] = [] for (const name in builtModelsGlb) { const glb: any = builtModelsGlb[name]; - newParams['preload'] = await uploadFile(name + '.glb', glb); + const url = await uploadFile(name + '.glb', glb) + newParams['preload'].push(url); // Add to preload list } // Build share URL