Adding messages to embedding updates ()

* WIP added toast for embedding updates

* Update and retain new change state

---------

Co-authored-by: timothycarambat <rambat1010@gmail.com>
This commit is contained in:
Sean Hatfield 2023-09-11 16:59:19 -07:00 committed by GitHub
parent b609b0fa92
commit 1ae68ffb59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 18 deletions
frontend/src
components/Modals/MangeWorkspace/Documents
utils

View file

@ -6,6 +6,7 @@ import { useParams } from "react-router-dom";
import Directory from "./Directory";
import ConfirmationModal from "./ConfirmationModal";
import { AlertTriangle } from "react-feather";
import showToast from "../../../../utils/toast";
export default function DocumentSettings({ workspace }) {
const { slug } = useParams();
@ -18,22 +19,27 @@ export default function DocumentSettings({ workspace }) {
const [hasFiles, setHasFiles] = useState(true);
const [canDelete, setCanDelete] = useState(false);
useEffect(() => {
async function fetchKeys() {
const localFiles = await System.localFiles();
const originalDocs = workspace.documents.map((doc) => doc.docpath) || [];
const hasAnyFiles = localFiles.items.some(
(folder) => folder?.items?.length > 0
);
async function fetchKeys(refetchWorkspace = false) {
const localFiles = await System.localFiles();
const currentWorkspace = refetchWorkspace
? await Workspace.bySlug(slug)
: workspace;
const originalDocs =
currentWorkspace.documents.map((doc) => doc.docpath) || [];
const hasAnyFiles = localFiles.items.some(
(folder) => folder?.items?.length > 0
);
const canDelete = await System.getCanDeleteWorkspaces();
setCanDelete(canDelete);
setDirectories(localFiles);
setOriginalDocuments([...originalDocs]);
setSelectFiles([...originalDocs]);
setHasFiles(hasAnyFiles);
setLoading(false);
}
const canDelete = await System.getCanDeleteWorkspaces();
setCanDelete(canDelete);
setDirectories(localFiles);
setOriginalDocuments([...originalDocs]);
setSelectFiles([...originalDocs]);
setHasFiles(hasAnyFiles);
setLoading(false);
}
useEffect(() => {
fetchKeys();
}, []);
@ -82,11 +88,28 @@ export default function DocumentSettings({ workspace }) {
const updateWorkspace = async (e) => {
e.preventDefault();
setSaving(true);
showToast("Updating workspace...", "info", { autoClose: false });
setShowConfirmation(false);
const changes = docChanges();
await Workspace.modifyEmbeddings(workspace.slug, changes);
await Workspace.modifyEmbeddings(workspace.slug, changes)
.then((res) => {
if (res && res.workspace) {
showToast("Workspace updated successfully.", "success", {
clear: true,
});
} else {
showToast("Workspace update failed.", "error", { clear: true });
}
})
.catch((error) => {
showToast(`Workspace update failed: ${error}`, "error", {
clear: true,
});
});
setSaving(false);
window.location.reload();
await fetchKeys(true);
};
const isSelected = (filepath) => {

View file

@ -1,7 +1,10 @@
import { toast } from "react-toastify";
import usePrefersDarkMode from "../hooks/usePrefersDarkMode";
const showToast = (message, type = "default") => {
// Additional Configs (opts)
// You can also pass valid ReactToast params to override the defaults.
// clear: false, // Will dismiss all visible toasts before rendering next toast
const showToast = (message, type = "default", opts = {}) => {
const prefersDarkMode = usePrefersDarkMode();
const options = {
position: "bottom-center",
@ -11,8 +14,11 @@ const showToast = (message, type = "default") => {
pauseOnHover: true,
draggable: true,
theme: prefersDarkMode ? "dark" : "light",
...opts,
};
if (opts?.clear === true) toast.dismiss();
switch (type) {
case "success":
toast.success(message, options);