Added Export handler on Main Page

This commit is contained in:
Lucas Oliveira 2024-06-06 14:35:12 -03:00
commit 7c28bb2bd6

View file

@ -18,6 +18,8 @@ import { getNameByType } from "../../utils/get-name-by-type";
import { sortFlows } from "../../utils/sort-flows"; import { sortFlows } from "../../utils/sort-flows";
import EmptyComponent from "../emptyComponent"; import EmptyComponent from "../emptyComponent";
import HeaderComponent from "../headerComponent"; import HeaderComponent from "../headerComponent";
import { downloadFlow, removeApiKeys } from "../../../../utils/reactflowUtils";
import { useDarkStore } from "../../../../stores/darkStore";
export default function ComponentsComponent({ export default function ComponentsComponent({
type = "all", type = "all",
@ -31,22 +33,22 @@ export default function ComponentsComponent({
const allFlows = useFlowsManagerStore((state) => state.allFlows); const allFlows = useFlowsManagerStore((state) => state.allFlows);
const flowsFromFolder = useFolderStore( const flowsFromFolder = useFolderStore(
(state) => state.selectedFolder?.flows (state) => state.selectedFolder?.flows,
); );
const setSuccessData = useAlertStore((state) => state.setSuccessData); const setSuccessData = useAlertStore((state) => state.setSuccessData);
const setErrorData = useAlertStore((state) => state.setErrorData); const setErrorData = useAlertStore((state) => state.setErrorData);
const [openDelete, setOpenDelete] = useState(false); const [openDelete, setOpenDelete] = useState(false);
const searchFlowsComponents = useFlowsManagerStore( const searchFlowsComponents = useFlowsManagerStore(
(state) => state.searchFlowsComponents (state) => state.searchFlowsComponents,
); );
const setSelectedFlowsComponentsCards = useFlowsManagerStore( const setSelectedFlowsComponentsCards = useFlowsManagerStore(
(state) => state.setSelectedFlowsComponentsCards (state) => state.setSelectedFlowsComponentsCards,
); );
const selectedFlowsComponentsCards = useFlowsManagerStore( const selectedFlowsComponentsCards = useFlowsManagerStore(
(state) => state.selectedFlowsComponentsCards (state) => state.selectedFlowsComponentsCards,
); );
const [handleFileDrop] = useFileDrop(uploadFlow, type)!; const [handleFileDrop] = useFileDrop(uploadFlow, type)!;
@ -82,7 +84,7 @@ export default function ComponentsComponent({
f.name.toLowerCase().includes(searchFlowsComponents.toLowerCase()) || f.name.toLowerCase().includes(searchFlowsComponents.toLowerCase()) ||
f.description f.description
.toLowerCase() .toLowerCase()
.includes(searchFlowsComponents.toLowerCase()) .includes(searchFlowsComponents.toLowerCase()),
); );
if (searchFlowsComponents === "") { if (searchFlowsComponents === "") {
@ -129,6 +131,8 @@ export default function ComponentsComponent({
setOpenDelete(true); setOpenDelete(true);
} else if (action === "duplicate") { } else if (action === "duplicate") {
handleDuplicate(); handleDuplicate();
} else if (action === "exprot") {
handleExport();
} }
}; };
@ -137,9 +141,9 @@ export default function ComponentsComponent({
selectedFlowsComponentsCards.map((selectedFlow) => selectedFlowsComponentsCards.map((selectedFlow) =>
addFlow( addFlow(
true, true,
allFlows.find((flow) => flow.id === selectedFlow) allFlows.find((flow) => flow.id === selectedFlow),
) ),
) ),
).then(() => { ).then(() => {
resetFilter(); resetFilter();
getFoldersApi(true); getFoldersApi(true);
@ -152,6 +156,26 @@ export default function ComponentsComponent({
}); });
}; };
const version = useDarkStore((state) => state.version);
const handleExport = () => {
selectedFlowsComponentsCards.map((selectedFlowId) => {
const selectedFlow = allFlows.find((flow) => flow.id === selectedFlowId);
downloadFlow(
removeApiKeys({
id: selectedFlow!.id,
data: selectedFlow!.data!,
description: selectedFlow!.description,
name: selectedFlow!.name,
last_tested_version: version,
is_component: false,
}),
selectedFlow!.name,
selectedFlow!.description,
);
});
};
const handleDeleteMultiple = () => { const handleDeleteMultiple = () => {
removeFlow(selectedFlowsComponentsCards) removeFlow(selectedFlowsComponentsCards)
.then(() => { .then(() => {
@ -180,7 +204,7 @@ export default function ComponentsComponent({
return true; return true;
} }
return false; return false;
} },
); );
setSelectedFlowsComponentsCards(selectedFlows); setSelectedFlowsComponentsCards(selectedFlows);
@ -215,7 +239,7 @@ export default function ComponentsComponent({
if (type === "all") return allFlows?.length; if (type === "all") return allFlows?.length;
return allFlows?.filter( return allFlows?.filter(
(f) => (f.is_component ?? false) === (type === "component") (f) => (f.is_component ?? false) === (type === "component"),
)?.length; )?.length;
}; };
@ -226,6 +250,7 @@ export default function ComponentsComponent({
handleDelete={() => handleSelectOptionsChange("delete")} handleDelete={() => handleSelectOptionsChange("delete")}
handleSelectAll={handleSelectAll} handleSelectAll={handleSelectAll}
handleDuplicate={() => handleSelectOptionsChange("duplicate")} handleDuplicate={() => handleSelectOptionsChange("duplicate")}
handleExport={() => handleSelectOptionsChange("export")}
disableFunctions={!(selectedFlowsComponentsCards?.length > 0)} disableFunctions={!(selectedFlowsComponentsCards?.length > 0)}
/> />
)} )}