mirror of
https://github.com/open-webui/open-webui.git
synced 2026-09-16 23:43:03 +00:00
feat(ui): add drag-and-drop support for OpenTerminal files
This commit is contained in:
parent
b645b0dc23
commit
d0bf20437c
1 changed files with 29 additions and 2 deletions
|
|
@ -58,6 +58,7 @@
|
|||
import { getChatById } from '$lib/apis/chats';
|
||||
import { getSessionUser } from '$lib/apis/auths';
|
||||
import { getTools } from '$lib/apis/tools';
|
||||
import { downloadFileBlob } from '$lib/apis/terminal';
|
||||
|
||||
import { WEBUI_BASE_URL, WEBUI_API_BASE_URL, PASTED_TEXT_CHARACTER_LIMIT } from '$lib/constants';
|
||||
import { getOAuthClientAuthorizationUrl } from '$lib/apis/configs';
|
||||
|
|
@ -828,8 +829,12 @@
|
|||
const onDragOver = (e: DragEvent) => {
|
||||
e.preventDefault();
|
||||
|
||||
// Check if a file or a sidebar chat item is being dragged.
|
||||
if (e.dataTransfer?.types?.includes('Files') || e.dataTransfer?.types?.includes('text/plain')) {
|
||||
// Check if a file, sidebar chat item, or terminal file is being dragged.
|
||||
if (
|
||||
e.dataTransfer?.types?.includes('Files') ||
|
||||
e.dataTransfer?.types?.includes('text/plain') ||
|
||||
e.dataTransfer?.types?.includes('application/x-terminal-file')
|
||||
) {
|
||||
dragged = true;
|
||||
} else {
|
||||
dragged = false;
|
||||
|
|
@ -876,6 +881,28 @@
|
|||
}
|
||||
}
|
||||
|
||||
const terminalFileData = e.dataTransfer?.getData('application/x-terminal-file');
|
||||
if (terminalFileData) {
|
||||
try {
|
||||
const data = JSON.parse(terminalFileData);
|
||||
if (data.name && data.path && data.url && data.key) {
|
||||
toast.info($i18n.t('Downloading {{name}} from OpenTerminal...', { name: data.name }));
|
||||
const result = await downloadFileBlob(data.url, data.key, data.path);
|
||||
if (result && result.blob) {
|
||||
const file = new File([result.blob], result.filename || data.name, {
|
||||
type: result.blob.type
|
||||
});
|
||||
inputFilesHandler([file]);
|
||||
} else {
|
||||
toast.error($i18n.t('Failed to download file from OpenTerminal'));
|
||||
}
|
||||
dragged = false;
|
||||
e.stopPropagation();
|
||||
return;
|
||||
}
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
if (e.dataTransfer?.files) {
|
||||
const inputFiles = Array.from(e.dataTransfer?.files);
|
||||
if (inputFiles && inputFiles.length > 0) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue