Removed typesContext
This commit is contained in:
parent
31c80204eb
commit
e2a0990c06
4 changed files with 6 additions and 196 deletions
|
|
@ -1,105 +0,0 @@
|
||||||
import _ from "lodash";
|
|
||||||
import {
|
|
||||||
createContext,
|
|
||||||
ReactNode,
|
|
||||||
useContext,
|
|
||||||
useEffect,
|
|
||||||
useState,
|
|
||||||
} from "react";
|
|
||||||
import { getAll, getHealth } from "../controllers/API";
|
|
||||||
import useAlertStore from "../stores/alertStore";
|
|
||||||
import { APIKindType } from "../types/api";
|
|
||||||
import { typesContextType } from "../types/typesContext";
|
|
||||||
import { AuthContext } from "./authContext";
|
|
||||||
|
|
||||||
//context to share types adn functions from nodes to flow
|
|
||||||
|
|
||||||
const initialValue: typesContextType = {
|
|
||||||
types: {},
|
|
||||||
setTypes: () => {},
|
|
||||||
templates: {},
|
|
||||||
setTemplates: () => {},
|
|
||||||
data: {},
|
|
||||||
setData: () => {},
|
|
||||||
getTypes: () => {},
|
|
||||||
setFetchError: () => {},
|
|
||||||
fetchError: false,
|
|
||||||
setFilterEdge: (filter) => {},
|
|
||||||
getFilterEdge: [],
|
|
||||||
};
|
|
||||||
|
|
||||||
export const typesContext = createContext<typesContextType>(initialValue);
|
|
||||||
|
|
||||||
export function TypesProvider({ children }: { children: ReactNode }) {
|
|
||||||
const [types, setTypes] = useState({});
|
|
||||||
const [templates, setTemplates] = useState({});
|
|
||||||
const [data, setData] = useState({});
|
|
||||||
const [fetchError, setFetchError] = useState(false);
|
|
||||||
const setLoading = useAlertStore((state) => state.setLoading);
|
|
||||||
const [getFilterEdge, setFilterEdge] = useState([]);
|
|
||||||
|
|
||||||
async function getTypes(): Promise<void> {
|
|
||||||
// We will keep a flag to handle the case where the component is unmounted before the API call resolves.
|
|
||||||
let isMounted = true;
|
|
||||||
try {
|
|
||||||
const result = await getAll();
|
|
||||||
// Make sure to only update the state if the component is still mounted.
|
|
||||||
if (isMounted && result?.status === 200) {
|
|
||||||
setLoading(false);
|
|
||||||
let { data } = _.cloneDeep(result);
|
|
||||||
setData((old) => ({ ...old, ...data }));
|
|
||||||
setTemplates(
|
|
||||||
Object.keys(data).reduce((acc, curr) => {
|
|
||||||
Object.keys(data[curr]).forEach((c: keyof APIKindType) => {
|
|
||||||
//prevent wrong overwriting of the component template by a group of the same type
|
|
||||||
if (!data[curr][c].flow) acc[c] = data[curr][c];
|
|
||||||
});
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
);
|
|
||||||
// Set the types by reducing over the keys of the result data and updating the accumulator.
|
|
||||||
setTypes(
|
|
||||||
// Reverse the keys so the tool world does not overlap
|
|
||||||
Object.keys(data)
|
|
||||||
.reverse()
|
|
||||||
.reduce((acc, curr) => {
|
|
||||||
Object.keys(data[curr]).forEach((c: keyof APIKindType) => {
|
|
||||||
acc[c] = curr;
|
|
||||||
// Add the base classes to the accumulator as well.
|
|
||||||
data[curr][c].base_classes?.forEach((b) => {
|
|
||||||
acc[b] = curr;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error("An error has occurred while fetching types.");
|
|
||||||
console.log(error);
|
|
||||||
await getHealth().catch((e) => {
|
|
||||||
setFetchError(true);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<typesContext.Provider
|
|
||||||
value={{
|
|
||||||
types,
|
|
||||||
setTypes,
|
|
||||||
setTemplates,
|
|
||||||
templates,
|
|
||||||
data,
|
|
||||||
setData,
|
|
||||||
getTypes,
|
|
||||||
fetchError,
|
|
||||||
setFetchError,
|
|
||||||
setFilterEdge,
|
|
||||||
getFilterEdge,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</typesContext.Provider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -10,8 +10,7 @@ import {
|
||||||
} from "../controllers/API";
|
} from "../controllers/API";
|
||||||
import { FlowType, NodeDataType } from "../types/flow";
|
import { FlowType, NodeDataType } from "../types/flow";
|
||||||
import { FlowState } from "../types/tabs";
|
import { FlowState } from "../types/tabs";
|
||||||
import { UseUndoRedoOptions } from "../types/typesContext";
|
import { FlowsManagerStoreType, UseUndoRedoOptions } from "../types/zustand/flowsManager";
|
||||||
import { FlowsManagerStoreType } from "../types/zustand/flowsManager";
|
|
||||||
import {
|
import {
|
||||||
addVersionToDuplicates,
|
addVersionToDuplicates,
|
||||||
createFlowComponent,
|
createFlowComponent,
|
||||||
|
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
import { Edge, Node } from "reactflow";
|
|
||||||
import { AlertItemType } from "../alerts";
|
|
||||||
|
|
||||||
export type alertContextType = {
|
|
||||||
errorData: { title: string; list?: Array<string> };
|
|
||||||
setErrorData: (newState: { title: string; list?: Array<string> }) => void;
|
|
||||||
errorOpen: boolean;
|
|
||||||
setErrorOpen: (newState: boolean) => void;
|
|
||||||
noticeData: { title: string; link?: string };
|
|
||||||
setNoticeData: (newState: { title: string; link?: string }) => void;
|
|
||||||
noticeOpen: boolean;
|
|
||||||
setNoticeOpen: (newState: boolean) => void;
|
|
||||||
successData: { title: string };
|
|
||||||
setSuccessData: (newState: { title: string }) => void;
|
|
||||||
successOpen: boolean;
|
|
||||||
setSuccessOpen: (newState: boolean) => void;
|
|
||||||
notificationCenter: boolean;
|
|
||||||
setNotificationCenter: (newState: boolean) => void;
|
|
||||||
notificationList: Array<AlertItemType>;
|
|
||||||
pushNotificationList: (Object: AlertItemType) => void;
|
|
||||||
clearNotificationList: () => void;
|
|
||||||
removeFromNotificationList: (index: string) => void;
|
|
||||||
loading: boolean;
|
|
||||||
setLoading: (newState: boolean) => void;
|
|
||||||
modalContextOpen: boolean | null;
|
|
||||||
setModalContextOpen: (newState: boolean) => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type darkContextType = {
|
|
||||||
dark: {};
|
|
||||||
setDark: (newState: {}) => void;
|
|
||||||
stars: number;
|
|
||||||
setStars: (stars: number) => void;
|
|
||||||
gradientIndex: number;
|
|
||||||
setGradientIndex: (index: number) => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type locationContextType = {
|
|
||||||
current: Array<string>;
|
|
||||||
setCurrent: (newState: Array<string>) => void;
|
|
||||||
isStackedOpen: boolean;
|
|
||||||
setIsStackedOpen: (newState: boolean) => void;
|
|
||||||
showSideBar: boolean;
|
|
||||||
setShowSideBar: (newState: boolean) => void;
|
|
||||||
extraNavigation: {
|
|
||||||
title: string;
|
|
||||||
options?: Array<{
|
|
||||||
name: string;
|
|
||||||
href: string;
|
|
||||||
icon: React.ElementType;
|
|
||||||
children?: Array<JSX.Element>;
|
|
||||||
}>;
|
|
||||||
};
|
|
||||||
setExtraNavigation: (newState: {
|
|
||||||
title: string;
|
|
||||||
options?: Array<{
|
|
||||||
name: string;
|
|
||||||
href: string;
|
|
||||||
icon: React.ElementType;
|
|
||||||
children?: Array<JSX.Element>;
|
|
||||||
}>;
|
|
||||||
}) => void;
|
|
||||||
extraComponent: any;
|
|
||||||
setExtraComponent: (newState: JSX.Element) => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type undoRedoContextType = {
|
|
||||||
undo: () => void;
|
|
||||||
redo: () => void;
|
|
||||||
takeSnapshot: () => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type UseUndoRedoOptions = {
|
|
||||||
maxHistorySize: number;
|
|
||||||
enableShortcuts: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type UseUndoRedo = (options?: UseUndoRedoOptions) => {
|
|
||||||
undo: () => void;
|
|
||||||
redo: () => void;
|
|
||||||
takeSnapshot: () => void;
|
|
||||||
canUndo: boolean;
|
|
||||||
canRedo: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type HistoryItem = {
|
|
||||||
nodes: Node[];
|
|
||||||
edges: Edge[];
|
|
||||||
};
|
|
||||||
|
|
@ -26,3 +26,8 @@ export type FlowsManagerStoreType = {
|
||||||
redo: () => void;
|
redo: () => void;
|
||||||
takeSnapshot: () => void;
|
takeSnapshot: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type UseUndoRedoOptions = {
|
||||||
|
maxHistorySize: number;
|
||||||
|
enableShortcuts: boolean;
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue