fix(flowsContext.tsx): add version property to FlowsContextInitialValue to prevent undefined errors
feat(flowsContext.tsx): add support for version property in FlowsProvider to store and retrieve the version of the app fix(exportModal/index.tsx): change version property to last_tested_version to match FlowType definition fix(extraSidebarComponent/index.tsx): add version property to saveFlowStore function call to match FlowType definition fix(extraSidebarComponent/sideBarDraggableComponent/index.tsx): add version property to downloadNode function call to match FlowType definition fix(nodeToolbarComponent/index.tsx): add version property to saveFlowStore function call to match FlowType definition fix(FlowPage/index.tsx): add version property to useContext to prevent undefined errors fix(ViewPage/index.tsx): add version property to useContext to prevent undefined errors fix(flow/index.ts): change version property to last_tested_version to match FlowType definition fix(tabs/index.ts): add version property to FlowsContextType to prevent undefined errors fix(reactflowUtils.ts): change createFlowComponent function signature to include version parameter
This commit is contained in:
parent
0f034b9a2e
commit
7f55da1df9
10 changed files with 37 additions and 42 deletions
|
|
@ -14,6 +14,7 @@ import { skipNodeUpdate } from "../constants/constants";
|
||||||
import {
|
import {
|
||||||
deleteFlowFromDatabase,
|
deleteFlowFromDatabase,
|
||||||
downloadFlowsFromDatabase,
|
downloadFlowsFromDatabase,
|
||||||
|
getVersion,
|
||||||
readFlowsFromDatabase,
|
readFlowsFromDatabase,
|
||||||
saveFlowToDatabase,
|
saveFlowToDatabase,
|
||||||
updateFlowInDatabase,
|
updateFlowInDatabase,
|
||||||
|
|
@ -82,6 +83,7 @@ const FlowsContextInitialValue: FlowsContextType = {
|
||||||
) => {},
|
) => {},
|
||||||
saveComponent: async (component: NodeDataType) => "",
|
saveComponent: async (component: NodeDataType) => "",
|
||||||
deleteComponent: (id: string, key: string) => {},
|
deleteComponent: (id: string, key: string) => {},
|
||||||
|
version: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const FlowsContext = createContext<FlowsContextType>(
|
export const FlowsContext = createContext<FlowsContextType>(
|
||||||
|
|
@ -711,10 +713,18 @@ export function FlowsProvider({ children }: { children: ReactNode }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const [isBuilt, setIsBuilt] = useState(false);
|
const [isBuilt, setIsBuilt] = useState(false);
|
||||||
|
// Initialize state variable for the version
|
||||||
|
const [version, setVersion] = useState("");
|
||||||
|
useEffect(() => {
|
||||||
|
getVersion().then((data) => {
|
||||||
|
setVersion(data.version);
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FlowsContext.Provider
|
<FlowsContext.Provider
|
||||||
value={{
|
value={{
|
||||||
|
version,
|
||||||
saveFlow,
|
saveFlow,
|
||||||
isBuilt,
|
isBuilt,
|
||||||
setIsBuilt,
|
setIsBuilt,
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,12 @@ import { EXPORT_DIALOG_SUBTITLE } from "../../constants/constants";
|
||||||
import { alertContext } from "../../contexts/alertContext";
|
import { alertContext } from "../../contexts/alertContext";
|
||||||
import { FlowsContext } from "../../contexts/flowsContext";
|
import { FlowsContext } from "../../contexts/flowsContext";
|
||||||
import { typesContext } from "../../contexts/typesContext";
|
import { typesContext } from "../../contexts/typesContext";
|
||||||
import { getVersion } from "../../controllers/API";
|
|
||||||
import { removeApiKeys } from "../../utils/reactflowUtils";
|
import { removeApiKeys } from "../../utils/reactflowUtils";
|
||||||
import BaseModal from "../baseModal";
|
import BaseModal from "../baseModal";
|
||||||
|
|
||||||
const ExportModal = forwardRef(
|
const ExportModal = forwardRef(
|
||||||
(props: { children: ReactNode }, ref): JSX.Element => {
|
(props: { children: ReactNode }, ref): JSX.Element => {
|
||||||
const { flows, tabId, downloadFlow } = useContext(FlowsContext);
|
const { flows, tabId, downloadFlow, version } = useContext(FlowsContext);
|
||||||
const { reactFlowInstance } = useContext(typesContext);
|
const { reactFlowInstance } = useContext(typesContext);
|
||||||
const { setNoticeData } = useContext(alertContext);
|
const { setNoticeData } = useContext(alertContext);
|
||||||
const [checked, setChecked] = useState(true);
|
const [checked, setChecked] = useState(true);
|
||||||
|
|
@ -25,13 +24,6 @@ const ExportModal = forwardRef(
|
||||||
const [name, setName] = useState(flow!.name);
|
const [name, setName] = useState(flow!.name);
|
||||||
const [description, setDescription] = useState(flow!.description);
|
const [description, setDescription] = useState(flow!.description);
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
// Initialize state variable for the version
|
|
||||||
const [version, setVersion] = useState("");
|
|
||||||
useEffect(() => {
|
|
||||||
getVersion().then((data) => {
|
|
||||||
setVersion(data.version);
|
|
||||||
});
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BaseModal size="smaller-h-full" open={open} setOpen={setOpen}>
|
<BaseModal size="smaller-h-full" open={open} setOpen={setOpen}>
|
||||||
|
|
@ -81,7 +73,7 @@ const ExportModal = forwardRef(
|
||||||
data: reactFlowInstance?.toObject()!,
|
data: reactFlowInstance?.toObject()!,
|
||||||
description,
|
description,
|
||||||
name,
|
name,
|
||||||
version,
|
last_tested_version: version,
|
||||||
},
|
},
|
||||||
name!,
|
name!,
|
||||||
description
|
description
|
||||||
|
|
@ -97,7 +89,7 @@ const ExportModal = forwardRef(
|
||||||
data: reactFlowInstance?.toObject()!,
|
data: reactFlowInstance?.toObject()!,
|
||||||
description,
|
description,
|
||||||
name,
|
name,
|
||||||
version: version,
|
last_tested_version: version,
|
||||||
}),
|
}),
|
||||||
name!,
|
name!,
|
||||||
description
|
description
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,9 @@ import DisclosureComponent from "../DisclosureComponent";
|
||||||
import SidebarDraggableComponent from "./sideBarDraggableComponent";
|
import SidebarDraggableComponent from "./sideBarDraggableComponent";
|
||||||
|
|
||||||
export default function ExtraSidebar(): JSX.Element {
|
export default function ExtraSidebar(): JSX.Element {
|
||||||
const { data, templates, getFilterEdge, setFilterEdge } =
|
const { data, templates, getFilterEdge, setFilterEdge, reactFlowInstance } =
|
||||||
useContext(typesContext);
|
useContext(typesContext);
|
||||||
const { flows, tabId, uploadFlow, tabsState, saveFlow, isBuilt } =
|
const { flows, tabId, uploadFlow, tabsState, saveFlow, isBuilt, version } =
|
||||||
useContext(FlowsContext);
|
useContext(FlowsContext);
|
||||||
const { setSuccessData, setErrorData } = useContext(alertContext);
|
const { setSuccessData, setErrorData } = useContext(alertContext);
|
||||||
const [dataFilter, setFilterData] = useState(data);
|
const [dataFilter, setFilterData] = useState(data);
|
||||||
|
|
@ -173,7 +173,9 @@ export default function ExtraSidebar(): JSX.Element {
|
||||||
}, [getFilterEdge]);
|
}, [getFilterEdge]);
|
||||||
|
|
||||||
const handleShareFlow = () => {
|
const handleShareFlow = () => {
|
||||||
const reactFlow = flow!.data as ReactFlowJsonObject;
|
const reactFlow = reactFlowInstance
|
||||||
|
? reactFlowInstance.toObject()
|
||||||
|
: (flow!.data as ReactFlowJsonObject);
|
||||||
const saveFlow: FlowType = {
|
const saveFlow: FlowType = {
|
||||||
name: flow!.name,
|
name: flow!.name,
|
||||||
id: flow!.id,
|
id: flow!.id,
|
||||||
|
|
@ -182,6 +184,7 @@ export default function ExtraSidebar(): JSX.Element {
|
||||||
...reactFlow,
|
...reactFlow,
|
||||||
},
|
},
|
||||||
is_component: false,
|
is_component: false,
|
||||||
|
last_tested_version: version,
|
||||||
};
|
};
|
||||||
saveFlowStore(
|
saveFlowStore(
|
||||||
saveFlow,
|
saveFlow,
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ export default function SidebarDraggableComponent({
|
||||||
official: boolean;
|
official: boolean;
|
||||||
}) {
|
}) {
|
||||||
const open = useRef(false);
|
const open = useRef(false);
|
||||||
const { getNodeId, deleteComponent } = useContext(FlowsContext);
|
const { getNodeId, deleteComponent, version } = useContext(FlowsContext);
|
||||||
const { autoLogin, userData } = useContext(AuthContext);
|
const { autoLogin, userData } = useContext(AuthContext);
|
||||||
|
|
||||||
function handleSelectChange(value: string) {
|
function handleSelectChange(value: string) {
|
||||||
|
|
@ -45,7 +45,10 @@ export default function SidebarDraggableComponent({
|
||||||
case "download":
|
case "download":
|
||||||
const type = removeCountFromString(itemName);
|
const type = removeCountFromString(itemName);
|
||||||
downloadNode(
|
downloadNode(
|
||||||
createFlowComponent({ id: getNodeId(type), type, node: apiClass })
|
createFlowComponent(
|
||||||
|
{ id: getNodeId(type), type, node: apiClass },
|
||||||
|
version
|
||||||
|
)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case "delete":
|
case "delete":
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ export default function NodeToolbarComponent({
|
||||||
const isMinimal = canMinimize();
|
const isMinimal = canMinimize();
|
||||||
const isGroup = data.node?.flow ? true : false;
|
const isGroup = data.node?.flow ? true : false;
|
||||||
|
|
||||||
const { paste, saveComponent } = useContext(FlowsContext);
|
const { paste, saveComponent, version } = useContext(FlowsContext);
|
||||||
const reactFlowInstance = useReactFlow();
|
const reactFlowInstance = useReactFlow();
|
||||||
const [showModalAdvanced, setShowModalAdvanced] = useState(false);
|
const [showModalAdvanced, setShowModalAdvanced] = useState(false);
|
||||||
const [showconfirmShare, setShowconfirmShare] = useState(false);
|
const [showconfirmShare, setShowconfirmShare] = useState(false);
|
||||||
|
|
@ -99,7 +99,7 @@ export default function NodeToolbarComponent({
|
||||||
const componentFlow = cloneDeep(data);
|
const componentFlow = cloneDeep(data);
|
||||||
saveComponent(componentFlow).then(() => {
|
saveComponent(componentFlow).then(() => {
|
||||||
saveFlowStore(
|
saveFlowStore(
|
||||||
createFlowComponent(componentFlow),
|
createFlowComponent(componentFlow, version),
|
||||||
getTagsIds(Array.from(selectedTags), tagListId),
|
getTagsIds(Array.from(selectedTags), tagListId),
|
||||||
sharePublic
|
sharePublic
|
||||||
).then(
|
).then(
|
||||||
|
|
@ -127,7 +127,7 @@ export default function NodeToolbarComponent({
|
||||||
updateNodeInternals(data.id);
|
updateNodeInternals(data.id);
|
||||||
break;
|
break;
|
||||||
case "Download":
|
case "Download":
|
||||||
downloadNode(createFlowComponent(cloneDeep(data)));
|
downloadNode(createFlowComponent(cloneDeep(data), version));
|
||||||
break;
|
break;
|
||||||
case "Share":
|
case "Share":
|
||||||
setShowconfirmShare(true);
|
setShowconfirmShare(true);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
import { useContext, useEffect, useState } from "react";
|
import { useContext, useEffect } from "react";
|
||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import Header from "../../components/headerComponent";
|
import Header from "../../components/headerComponent";
|
||||||
import { FlowsContext } from "../../contexts/flowsContext";
|
import { FlowsContext } from "../../contexts/flowsContext";
|
||||||
import { getVersion } from "../../controllers/API";
|
|
||||||
import Page from "./components/PageComponent";
|
import Page from "./components/PageComponent";
|
||||||
|
|
||||||
export default function FlowPage(): JSX.Element {
|
export default function FlowPage(): JSX.Element {
|
||||||
const { flows, tabId, setTabId } = useContext(FlowsContext);
|
const { flows, tabId, setTabId, version } = useContext(FlowsContext);
|
||||||
const { id } = useParams();
|
const { id } = useParams();
|
||||||
|
|
||||||
// Set flow tab id
|
// Set flow tab id
|
||||||
|
|
@ -14,14 +13,6 @@ export default function FlowPage(): JSX.Element {
|
||||||
setTabId(id!);
|
setTabId(id!);
|
||||||
}, [id]);
|
}, [id]);
|
||||||
|
|
||||||
// Initialize state variable for the version
|
|
||||||
const [version, setVersion] = useState("");
|
|
||||||
useEffect(() => {
|
|
||||||
getVersion().then((data) => {
|
|
||||||
setVersion(data.version);
|
|
||||||
});
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Header />
|
<Header />
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { useContext, useEffect, useState } from "react";
|
import { useContext, useEffect } from "react";
|
||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import { FlowsContext } from "../../contexts/flowsContext";
|
import { FlowsContext } from "../../contexts/flowsContext";
|
||||||
import { getVersion } from "../../controllers/API";
|
|
||||||
import Page from "../FlowPage/components/PageComponent";
|
import Page from "../FlowPage/components/PageComponent";
|
||||||
|
|
||||||
export default function ViewPage() {
|
export default function ViewPage() {
|
||||||
|
|
@ -13,14 +12,6 @@ export default function ViewPage() {
|
||||||
setTabId(id!);
|
setTabId(id!);
|
||||||
}, [id]);
|
}, [id]);
|
||||||
|
|
||||||
// Initialize state variable for the version
|
|
||||||
const [version, setVersion] = useState("");
|
|
||||||
useEffect(() => {
|
|
||||||
getVersion().then((data) => {
|
|
||||||
setVersion(data.version);
|
|
||||||
});
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flow-page-positioning">
|
<div className="flow-page-positioning">
|
||||||
{flows.length > 0 &&
|
{flows.length > 0 &&
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ export type FlowType = {
|
||||||
is_component?: boolean;
|
is_component?: boolean;
|
||||||
parent?: string;
|
parent?: string;
|
||||||
date_created?: string;
|
date_created?: string;
|
||||||
version?: string;
|
last_tested_version?: string;
|
||||||
};
|
};
|
||||||
export type NodeType = {
|
export type NodeType = {
|
||||||
id: string;
|
id: string;
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ export type FlowsContextType = {
|
||||||
getTweak: tweakType;
|
getTweak: tweakType;
|
||||||
saveComponent: (component: NodeDataType) => Promise<String | undefined>;
|
saveComponent: (component: NodeDataType) => Promise<String | undefined>;
|
||||||
deleteComponent: (id: string, key: string) => void;
|
deleteComponent: (id: string, key: string) => void;
|
||||||
|
version: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type FlowsState = {
|
export type FlowsState = {
|
||||||
|
|
|
||||||
|
|
@ -1058,7 +1058,10 @@ export function getGroupStatus(
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createFlowComponent(nodeData: NodeDataType): FlowType {
|
export function createFlowComponent(
|
||||||
|
nodeData: NodeDataType,
|
||||||
|
version: string
|
||||||
|
): FlowType {
|
||||||
nodeData.node!.official = false;
|
nodeData.node!.official = false;
|
||||||
const flowNode: FlowType = {
|
const flowNode: FlowType = {
|
||||||
data: {
|
data: {
|
||||||
|
|
@ -1077,6 +1080,7 @@ export function createFlowComponent(nodeData: NodeDataType): FlowType {
|
||||||
name: nodeData.node?.display_name || nodeData.type || "",
|
name: nodeData.node?.display_name || nodeData.type || "",
|
||||||
id: nodeData.id || "",
|
id: nodeData.id || "",
|
||||||
is_component: true,
|
is_component: true,
|
||||||
|
last_tested_version: version,
|
||||||
};
|
};
|
||||||
return flowNode;
|
return flowNode;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue