这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ function FileUploadProgressComponent({
file,
rejected = false,
reason = null,
onUploadSuccess,
onUploadError,
}) {
const [timerMs, setTimerMs] = useState(10);
const [status, setStatus] = useState(file?.rejected ? "uploading" : "failed");
Expand All @@ -24,9 +26,16 @@ function FileUploadProgressComponent({
}, 100);

// Chunk streaming not working in production so we just sit and wait
await Workspace.uploadFile(slug, formData);
setStatus("complete");
clearInterval(timer);
const { response, data } = await Workspace.uploadFile(slug, formData);
if (!response.ok) {
setStatus("failed");
clearInterval(timer);
onUploadError(data.error);
} else {
setStatus("complete");
clearInterval(timer);
onUploadSuccess();
}
}
!!file && !rejected && uploadFile();
}, []);
Expand Down
39 changes: 39 additions & 0 deletions frontend/src/components/Modals/MangeWorkspace/Upload/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,19 @@ import { Frown } from "react-feather";
export default function UploadToWorkspace({ workspace, fileTypes }) {
const [ready, setReady] = useState(null);
const [files, setFiles] = useState([]);
const [successMsg, setSuccessMsg] = useState("");
const [errorMsg, setErrorMsg] = useState("");

const handleUploadSuccess = () => {
setSuccessMsg("File uploaded successfully");
setErrorMsg(null);
};

const handleUploadError = (message) => {
setErrorMsg(`Upload failed: ${message}`);
setSuccessMsg(null);
};

const onDrop = useCallback(async (acceptedFiles, rejections) => {
const newAccepted = acceptedFiles.map((file) => {
return {
Expand Down Expand Up @@ -37,6 +50,20 @@ export default function UploadToWorkspace({ workspace, fileTypes }) {
checkProcessorOnline();
}, []);

useEffect(() => {
if (!!successMsg) {
setTimeout(() => {
setSuccessMsg("");
}, 3_500);
}

if (!!errorMsg) {
setTimeout(() => {
setErrorMsg("");
}, 3_500);
}
}, [successMsg, errorMsg]);

const { getRootProps, getInputProps } = useDropzone({
onDrop,
accept: {
Expand Down Expand Up @@ -133,6 +160,8 @@ export default function UploadToWorkspace({ workspace, fileTypes }) {
slug={workspace.slug}
rejected={file?.rejected}
reason={file?.reason}
onUploadSuccess={handleUploadSuccess}
onUploadError={handleUploadError}
/>
))}
</div>
Expand All @@ -144,6 +173,16 @@ export default function UploadToWorkspace({ workspace, fileTypes }) {
{Object.values(fileTypes).flat().join(" ")}
</code>
</p>
{successMsg && (
<p className="text-green-600 dark:text-green-400 text-sm text-center pt-2">
{successMsg}
</p>
)}
{errorMsg && (
<p className="text-red-600 dark:text-red-400 text-sm text-center pt-2">
{errorMsg}
</p>
)}
</ModalWrapper>
);
}
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/models/workspace.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,9 @@ const Workspace = {
body: formData,
headers: baseHeaders(),
});
return response;

const data = await response.json();
return { response, data };
},
};

Expand Down
24 changes: 10 additions & 14 deletions server/endpoints/workspaces.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ const { WorkspaceChats } = require("../models/workspaceChats");
const { convertToChatHistory } = require("../utils/chats");
const { getVectorDbClass } = require("../utils/helpers");
const { setupMulter } = require("../utils/files/multer");
const {
fileUploadProgress,
} = require("../utils/middleware/fileUploadProgress");
const {
checkPythonAppAlive,
processDocument,
Expand Down Expand Up @@ -69,32 +66,31 @@ function workspaceEndpoints(app) {

app.post(
"/workspace/:slug/upload",
fileUploadProgress,
handleUploads.single("file"),
async function (request, _) {
async function (request, response) {
const { originalname } = request.file;
const processingOnline = await checkPythonAppAlive();

if (!processingOnline) {
console.log(
`Python processing API is not online. Document ${originalname} will not be processed automatically.`
);
return;
response
.status(500)
.json({
success: false,
error: `Python processing API is not online. Document ${originalname} will not be processed automatically.`,
})
.end();
}

const { success, reason } = await processDocument(originalname);
if (!success) {
console.log(
`Python processing API was not able to process document ${originalname}. Reason: ${reason}`
);
return false;
response.status(500).json({ success: false, error: reason }).end();
}

console.log(
`Document ${originalname} uploaded processed and successfully. It is now available in documents.`
);
await Telemetry.sendTelemetry("document_uploaded");
return;
response.status(200).json({ success: true, error: null });
}
);

Expand Down
26 changes: 0 additions & 26 deletions server/utils/middleware/fileUploadProgress.js

This file was deleted.