diff --git a/src/frontend/src/components/sidebarComponent/components/sideBarFolderButtons/index.tsx b/src/frontend/src/components/sidebarComponent/components/sideBarFolderButtons/index.tsx index 1516a65a1..93080117e 100644 --- a/src/frontend/src/components/sidebarComponent/components/sideBarFolderButtons/index.tsx +++ b/src/frontend/src/components/sidebarComponent/components/sideBarFolderButtons/index.tsx @@ -1,3 +1,4 @@ +import { usePostUploadFolders } from "@/controllers/API/queries/folders"; import { useEffect, useRef, useState } from "react"; import { useLocation } from "react-router-dom"; import { FolderType } from "../../../../pages/MainPage/entities"; @@ -33,7 +34,6 @@ const SideBarFoldersButtonsComponent = ({ const [editFolders, setEditFolderName] = useState( folders.map((obj) => ({ name: obj.name, edit: false })), ); - const uploadFolder = useFolderStore((state) => state.uploadFolder); const currentFolder = pathname.split("/"); const urlWithoutPath = pathname.split("/").length < 4; const myCollectionId = useFolderStore((state) => state.myCollectionId); @@ -61,21 +61,49 @@ const SideBarFoldersButtonsComponent = ({ handleFolderChange, ); + const { mutate } = usePostUploadFolders(); + const handleUploadFlowsToFolder = () => { - uploadFolder(folderId) - .then(() => { - getFolderById(folderId); - setSuccessData({ - title: "Uploaded successfully", + const input = document.createElement("input"); + input.type = "file"; + input.accept = ".json"; + input.click(); + + input.onchange = (event: Event) => { + if ( + (event.target as HTMLInputElement).files![0].type === "application/json" + ) { + const file = (event.target as HTMLInputElement).files![0]; + const formData = new FormData(); + formData.append("file", file); + file.text().then(async (text) => { + const data = JSON.parse(text); + if (data.data?.nodes) { + await useFlowsManagerStore.getState().addFlow(true, data); + getFolderById(folderId); + } else { + mutate( + { formData }, + { + onSuccess: () => { + getFolderById(folderId); + setSuccessData({ + title: "Uploaded successfully", + }); + }, + onError: (err) => { + console.log(err); + setErrorData({ + title: `Error on upload`, + list: [err["response"]["data"]], + }); + }, + }, + ); + } }); - }) - .catch((err) => { - console.log(err); - setErrorData({ - title: `Error on upload`, - list: [err["response"]["data"]], - }); - }); + } + }; }; const handleDownloadFolder = (id: string) => { diff --git a/src/frontend/src/controllers/API/helpers/constants.ts b/src/frontend/src/controllers/API/helpers/constants.ts index 871707887..1c5146bb1 100644 --- a/src/frontend/src/controllers/API/helpers/constants.ts +++ b/src/frontend/src/controllers/API/helpers/constants.ts @@ -13,6 +13,7 @@ export const URLs = { AUTOLOGIN: "auto_login", REFRESH: "refresh", BUILD: `build`, + FOLDERS: `folders`, } as const; export function getURL(key: keyof typeof URLs, params: any = {}) { diff --git a/src/frontend/src/controllers/API/queries/auth/index.ts b/src/frontend/src/controllers/API/queries/auth/index.ts index 49ecf2dc4..ea8f60cd7 100644 --- a/src/frontend/src/controllers/API/queries/auth/index.ts +++ b/src/frontend/src/controllers/API/queries/auth/index.ts @@ -1 +1,10 @@ +export * from "./use-delete-users"; +export * from "./use-get-autologin"; export * from "./use-get-user"; +export * from "./use-get-users-page"; +export * from "./use-patch-logout"; +export * from "./use-patch-reset-password"; +export * from "./use-patch-update-user"; +export * from "./use-post-add-user"; +export * from "./use-post-login-user"; +export * from "./use-post-refresh-access"; diff --git a/src/frontend/src/controllers/API/queries/auth/use-logout.ts b/src/frontend/src/controllers/API/queries/auth/use-patch-logout.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/auth/use-logout.ts rename to src/frontend/src/controllers/API/queries/auth/use-patch-logout.ts diff --git a/src/frontend/src/controllers/API/queries/auth/use-reset-password.ts b/src/frontend/src/controllers/API/queries/auth/use-patch-reset-password.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/auth/use-reset-password.ts rename to src/frontend/src/controllers/API/queries/auth/use-patch-reset-password.ts diff --git a/src/frontend/src/controllers/API/queries/auth/use-update-user.ts b/src/frontend/src/controllers/API/queries/auth/use-patch-update-user.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/auth/use-update-user.ts rename to src/frontend/src/controllers/API/queries/auth/use-patch-update-user.ts diff --git a/src/frontend/src/controllers/API/queries/auth/use-add-user.ts b/src/frontend/src/controllers/API/queries/auth/use-post-add-user.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/auth/use-add-user.ts rename to src/frontend/src/controllers/API/queries/auth/use-post-add-user.ts diff --git a/src/frontend/src/controllers/API/queries/auth/use-login-user.ts b/src/frontend/src/controllers/API/queries/auth/use-post-login-user.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/auth/use-login-user.ts rename to src/frontend/src/controllers/API/queries/auth/use-post-login-user.ts diff --git a/src/frontend/src/controllers/API/queries/auth/use-refresh-access.ts b/src/frontend/src/controllers/API/queries/auth/use-post-refresh-access.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/auth/use-refresh-access.ts rename to src/frontend/src/controllers/API/queries/auth/use-post-refresh-access.ts diff --git a/src/frontend/src/controllers/API/queries/folders/index.tsx b/src/frontend/src/controllers/API/queries/folders/index.tsx new file mode 100644 index 000000000..43317be44 --- /dev/null +++ b/src/frontend/src/controllers/API/queries/folders/index.tsx @@ -0,0 +1 @@ +export * from "./use-post-upload-folders"; diff --git a/src/frontend/src/controllers/API/queries/folders/use-post-upload-folders.ts b/src/frontend/src/controllers/API/queries/folders/use-post-upload-folders.ts new file mode 100644 index 000000000..4a2397a61 --- /dev/null +++ b/src/frontend/src/controllers/API/queries/folders/use-post-upload-folders.ts @@ -0,0 +1,32 @@ +import useFlowsManagerStore from "@/stores/flowsManagerStore"; +import { useFolderStore } from "@/stores/foldersStore"; +import { Users, useMutationFunctionType } from "@/types/api"; +import { api } from "../../api"; +import { getURL } from "../../helpers/constants"; +import { UseRequestProcessor } from "../../services/request-processor"; + +interface IPostAddUploadFolders { + formData: FormData; +} + +export const usePostUploadFolders: useMutationFunctionType< + undefined, + IPostAddUploadFolders +> = (options?) => { + const { mutate } = UseRequestProcessor(); + + const uploadFoldersFn = async ( + payload: IPostAddUploadFolders, + ): Promise => { + const res = await api.post( + `${getURL("FOLDERS")}/upload/`, + payload.formData, + ); + await useFolderStore.getState().getFoldersApi(true); + return res.data; + }; + + const mutation = mutate(["usePostUploadFolders"], uploadFoldersFn, options); + + return mutation; +}; diff --git a/src/frontend/src/controllers/API/queries/messages/index.ts b/src/frontend/src/controllers/API/queries/messages/index.ts index 986efe801..86539d2c1 100644 --- a/src/frontend/src/controllers/API/queries/messages/index.ts +++ b/src/frontend/src/controllers/API/queries/messages/index.ts @@ -1,3 +1,3 @@ export * from "./use-delete-messages"; export * from "./use-get-messages"; -export * from "./use-update-messages"; +export * from "./use-put-update-messages"; diff --git a/src/frontend/src/controllers/API/queries/messages/use-update-messages.ts b/src/frontend/src/controllers/API/queries/messages/use-put-update-messages.ts similarity index 100% rename from src/frontend/src/controllers/API/queries/messages/use-update-messages.ts rename to src/frontend/src/controllers/API/queries/messages/use-put-update-messages.ts diff --git a/src/frontend/src/stores/foldersStore.tsx b/src/frontend/src/stores/foldersStore.tsx index ec013d66e..f5e6c8bbe 100644 --- a/src/frontend/src/stores/foldersStore.tsx +++ b/src/frontend/src/stores/foldersStore.tsx @@ -133,50 +133,6 @@ export const useFolderStore = create((set, get) => ({ setFolderDragging: (folder) => set(() => ({ folderDragging: folder })), folderIdDragging: "", setFolderIdDragging: (id) => set(() => ({ folderIdDragging: id })), - uploadFolder: () => { - return new Promise((resolve, reject) => { - const input = document.createElement("input"); - input.type = "file"; - input.accept = ".json"; - input.onchange = (event: Event) => { - if ( - (event.target as HTMLInputElement).files![0].type === - "application/json" - ) { - const file = (event.target as HTMLInputElement).files![0]; - const formData = new FormData(); - formData.append("file", file); - file.text().then((text) => { - const data = JSON.parse(text); - if (data.data?.nodes) { - useFlowsManagerStore - .getState() - .addFlow(true, data) - .then(() => { - resolve(); - }) - .catch((error) => { - reject(error); - }); - } else { - uploadFlowsFromFolders(formData) - .then(() => { - get() - .getFoldersApi(true) - .then(() => { - resolve(); - }); - }) - .catch((error) => { - reject(error); - }); - } - }); - } - }; - input.click(); - }); - }, starterProjectId: "", setStarterProjectId: (id) => set(() => ({ starterProjectId: id })), })); diff --git a/src/frontend/src/types/zustand/folders/index.ts b/src/frontend/src/types/zustand/folders/index.ts index ea352ae28..51737a30a 100644 --- a/src/frontend/src/types/zustand/folders/index.ts +++ b/src/frontend/src/types/zustand/folders/index.ts @@ -22,7 +22,6 @@ export type FoldersStoreType = { setFolderUrl: (folderUrl: string) => void; folderDragging: boolean; setFolderDragging: (set: boolean) => void; - uploadFolder: (folderId: string) => Promise; folderIdDragging: string; setFolderIdDragging: (id: string) => void; starterProjectId: string;