From 621ed6de7f85d216be6adde7fcebdbc601aad735 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Sat, 19 Sep 2026 11:03:17 -0400 Subject: [PATCH] fix: export every prompt and model from the workspace, not only the page on screen (#30187) --- src/lib/apis/models/index.ts | 8 ++++---- src/lib/components/workspace/Models.svelte | 6 +++--- src/lib/components/workspace/Prompts.svelte | 12 ++++++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/lib/apis/models/index.ts b/src/lib/apis/models/index.ts index eac4b9408a..11b3829cc2 100644 --- a/src/lib/apis/models/index.ts +++ b/src/lib/apis/models/index.ts @@ -1,10 +1,10 @@ import { WEBUI_API_BASE_URL } from '$lib/constants'; -export const exportModels = async (token: string, ids: string[]) => { +export const exportModels = async (token: string, ids?: string[]) => { const query = new URLSearchParams(); - ids.forEach((id) => query.append('ids', id)); - if (!ids.length) return []; - const response = await fetch(`${WEBUI_API_BASE_URL}/models/export?${query}`, { + (ids ?? []).forEach((id) => query.append('ids', id)); + if (ids && !ids.length) return []; + const response = await fetch(`${WEBUI_API_BASE_URL}/models/export${ids ? `?${query}` : ''}`, { headers: { authorization: `Bearer ${token}` } }); if (!response.ok) throw await response.json(); diff --git a/src/lib/components/workspace/Models.svelte b/src/lib/components/workspace/Models.svelte index ecdeaeb95f..328fac0b03 100644 --- a/src/lib/components/workspace/Models.svelte +++ b/src/lib/components/workspace/Models.svelte @@ -114,7 +114,7 @@ id: 'models-export', label: $i18n.t('Export JSON'), onClick: async () => { - await downloadModels(models); + await downloadModels(); }, visible: $user?.role === 'admin' || $user?.permissions?.workspace?.models_export } @@ -283,11 +283,11 @@ } }; - const downloadModels = async (models) => { + const downloadModels = async (models = null) => { try { models = await exportModels( localStorage.token, - models.map((model: { id: string }) => model.id) + models ? models.map((model: { id: string }) => model.id) : undefined ); } catch (error: any) { toast.error(`${error?.detail ?? error}`); diff --git a/src/lib/components/workspace/Prompts.svelte b/src/lib/components/workspace/Prompts.svelte index 207d240b7f..5cabe01b80 100644 --- a/src/lib/components/workspace/Prompts.svelte +++ b/src/lib/components/workspace/Prompts.svelte @@ -19,7 +19,8 @@ deletePromptById, togglePromptById, getPromptItems, - getPromptTags + getPromptTags, + getPrompts } from '$lib/apis/prompts'; import { capitalizeFirstLetter, slugify, copyToClipboard } from '$lib/utils'; @@ -108,7 +109,14 @@ id: 'prompts-export', label: $i18n.t('Export JSON'), onClick: async () => { - let blob = new Blob([JSON.stringify(prompts)], { + const _prompts = await getPrompts(localStorage.token).catch((error) => { + toast.error(`${error}`); + return null; + }); + if (!_prompts) { + return; + } + let blob = new Blob([JSON.stringify(_prompts)], { type: 'application/json' }); saveAs(blob, `prompts-export-${Date.now()}.json`);