mirror of
https://github.com/open-webui/open-webui
synced 2025-06-22 18:07:17 +00:00
Update Folders.svelte
This commit is contained in:
parent
f6ec2f537f
commit
a9c4554017
@ -1,11 +1,17 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { createEventDispatcher } from 'svelte';
|
import { createEventDispatcher, getContext } from 'svelte';
|
||||||
|
import { toast } from 'svelte-sonner';
|
||||||
|
import RecursiveFolder from './RecursiveFolder.svelte';
|
||||||
|
import EditFolderModal from './Folders/EditFolderModal.svelte';
|
||||||
|
import { updateFolderById } from '$lib/apis/folders';
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
import RecursiveFolder from './RecursiveFolder.svelte';
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
export let folders = {};
|
export let folders = {};
|
||||||
|
|
||||||
let folderList = [];
|
let folderList = [];
|
||||||
|
|
||||||
// Get the list of folders that have no parent, sorted by name alphabetically
|
// Get the list of folders that have no parent, sorted by name alphabetically
|
||||||
$: folderList = Object.keys(folders)
|
$: folderList = Object.keys(folders)
|
||||||
.filter((key) => folders[key].parent_id === null)
|
.filter((key) => folders[key].parent_id === null)
|
||||||
@ -15,8 +21,63 @@
|
|||||||
sensitivity: 'base'
|
sensitivity: 'base'
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let showEditFolderModal = false;
|
||||||
|
let currentEditingFolder = null;
|
||||||
|
|
||||||
|
const handleEditFolderEvent = (event) => {
|
||||||
|
const folderToEdit = event.detail;
|
||||||
|
if (folderToEdit && folderToEdit.id) {
|
||||||
|
currentEditingFolder = { ...folderToEdit };
|
||||||
|
showEditFolderModal = true;
|
||||||
|
} else {
|
||||||
|
console.error('EditFolder event did not provide valid folder data:', event.detail);
|
||||||
|
toast.error($i18n.t('Failed to open edit dialog: Invalid folder data.'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSaveFolderEdit = async (event) => {
|
||||||
|
const { id, name, system_prompt } = event.detail;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const updatedFolder = await updateFolderById(localStorage.token, id, {
|
||||||
|
name,
|
||||||
|
system_prompt
|
||||||
|
});
|
||||||
|
|
||||||
|
if (updatedFolder && updatedFolder.id) {
|
||||||
|
toast.success($i18n.t('Folder updated successfully'));
|
||||||
|
showEditFolderModal = false;
|
||||||
|
currentEditingFolder = null;
|
||||||
|
dispatch('update', updatedFolder);
|
||||||
|
} else {
|
||||||
|
const errorDetail = updatedFolder?.detail || $i18n.t('Unknown error');
|
||||||
|
toast.error(`${$i18n.t('Failed to update folder')}: ${errorDetail}`);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to update folder:', error);
|
||||||
|
const errorDetail = error?.detail || error?.message || $i18n.t('Unknown error');
|
||||||
|
toast.error(`${$i18n.t('Failed to update folder')}: ${errorDetail}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCreateChatInFolder = (event) => {
|
||||||
|
dispatch('createChatInFolder', event.detail);
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
{#if showEditFolderModal && currentEditingFolder}
|
||||||
|
<EditFolderModal
|
||||||
|
bind:show={showEditFolderModal}
|
||||||
|
folder={currentEditingFolder}
|
||||||
|
on:saveFolder={handleSaveFolderEdit}
|
||||||
|
on:close={() => {
|
||||||
|
showEditFolderModal = false;
|
||||||
|
currentEditingFolder = null;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#each folderList as folderId (folderId)}
|
{#each folderList as folderId (folderId)}
|
||||||
<RecursiveFolder
|
<RecursiveFolder
|
||||||
className=""
|
className=""
|
||||||
@ -31,5 +92,7 @@
|
|||||||
on:change={(e) => {
|
on:change={(e) => {
|
||||||
dispatch('change', e.detail);
|
dispatch('change', e.detail);
|
||||||
}}
|
}}
|
||||||
|
on:editFolder={handleEditFolderEvent}
|
||||||
|
on:createChatInFolder={handleCreateChatInFolder}
|
||||||
/>
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
|
Loading…
Reference in New Issue
Block a user