mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-20 09:16:13 +01:00
🗃️ feat: General File Support for OpenAI, Azure, Custom, Anthropic and Google (RAG) (#2143)
* refactor: re-purpose `resendImages` as `resendFiles` * refactor: re-purpose `resendImages` as `resendFiles` * feat: upload general files * feat: embed file during upload * feat: delete file embeddings on file deletion * chore(fileConfig): add epub+zip type * feat(encodeAndFormat): handle non-image files * feat(createContextHandlers): build context prompt from file attachments and successful RAG * fix: prevent non-temp files as well as embedded files to be deleted on new conversation * fix: remove temp_file_id on usage, prevent non-temp files as well as embedded files to be deleted on new conversation * fix: prevent non-temp files as well as embedded files to be deleted on new conversation * feat(OpenAI/Anthropic/Google): basic RAG support * fix: delete `resendFiles` only when true (Default) * refactor(RAG): update endpoints and pass JWT * fix(resendFiles): default values * fix(context/processFile): query unique ids only * feat: rag-api.yaml * feat: file upload improved ux for longer uploads * chore: await embed call and catch embedding errors * refactor: store augmentedPrompt in Client * refactor(processFileUpload): throw error if not assistant file upload * fix(useFileHandling): handle markdown empty mimetype issue * chore: necessary compose file changes
This commit is contained in:
parent
af347cccde
commit
f7761df52c
38 changed files with 683 additions and 261 deletions
34
client/src/hooks/Files/useDelayedUploadToast.ts
Normal file
34
client/src/hooks/Files/useDelayedUploadToast.ts
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import { useState } from 'react';
|
||||
import { useToastContext } from '~/Providers/ToastContext';
|
||||
import useLocalize from '~/hooks/useLocalize';
|
||||
|
||||
export const useDelayedUploadToast = () => {
|
||||
const localize = useLocalize();
|
||||
const { showToast } = useToastContext();
|
||||
const [uploadTimers, setUploadTimers] = useState({});
|
||||
|
||||
const startUploadTimer = (fileId: string, fileName: string) => {
|
||||
const timer = setTimeout(() => {
|
||||
const message = localize('com_ui_upload_delay', fileName);
|
||||
showToast({
|
||||
message,
|
||||
status: 'warning',
|
||||
duration: 7000,
|
||||
});
|
||||
}, 3000); // 3 seconds delay
|
||||
|
||||
setUploadTimers((prev) => ({ ...prev, [fileId]: timer }));
|
||||
};
|
||||
|
||||
const clearUploadTimer = (fileId: string) => {
|
||||
if (uploadTimers[fileId]) {
|
||||
clearTimeout(uploadTimers[fileId]);
|
||||
setUploadTimers((prev) => {
|
||||
const { [fileId]: _, ...rest } = prev as Record<string, unknown>;
|
||||
return rest;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return { startUploadTimer, clearUploadTimer };
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue