fix: data references

pull/118/head
corpulent 3 years ago
parent 7ae450dbbe
commit 6dcf7f22fd

@ -1,28 +1,32 @@
import { useCallback, useEffect, useState } from "react"; import { useCallback, useEffect, useRef, useState } from "react";
import { CallbackFunction, IProject } from "../../types"; import { CallbackFunction, IProject } from "../../types";
import Spinner from "../global/Spinner"; import Spinner from "../global/Spinner";
import VisibilitySwitch from "../global/VisibilitySwitch"; import VisibilitySwitch from "../global/VisibilitySwitch";
interface IManifestSelectProps { interface IHeaderProps {
onSave: CallbackFunction; onSave: CallbackFunction;
isLoading: boolean; isLoading: boolean;
projectData: IProject; projectData: IProject;
isAuthenticated: boolean; isAuthenticated: boolean;
} }
const ManifestSelect = (props: IManifestSelectProps) => { const Header = (props: IHeaderProps) => {
const { onSave, isLoading, projectData, isAuthenticated } = props; const { onSave, isLoading, projectData, isAuthenticated } = props;
const [visibility, setVisibility] = useState(false); const [visibility, setVisibility] = useState(false);
const [projectName, setProjectName] = useState("Untitled"); const [projectName, setProjectName] = useState("Untitled");
const visibilityRef = useRef(false);
const projectNameRef = useRef("Untitled");
const handleNameChange = useCallback((e: any) => { const handleNameChange = useCallback((e: any) => {
setProjectName(e.target.value); setProjectName(e.target.value);
projectNameRef.current = e.target.value;
}, []); }, []);
const handleSave = useCallback(() => { const handleSave = useCallback(() => {
const data: any = { const data: any = {
name: projectName, name: projectNameRef.current,
visibility: +visibility visibility: +visibilityRef.current
}; };
onSave(data); onSave(data);
@ -35,6 +39,9 @@ const ManifestSelect = (props: IManifestSelectProps) => {
setProjectName(projectData.name); setProjectName(projectData.name);
setVisibility(Boolean(projectData.visibility)); setVisibility(Boolean(projectData.visibility));
visibilityRef.current = Boolean(projectData.visibility);
projectNameRef.current = projectData.name;
}, [projectData]); }, [projectData]);
return ( return (
@ -81,6 +88,7 @@ const ManifestSelect = (props: IManifestSelectProps) => {
isVisible={visibility} isVisible={visibility}
onToggle={() => { onToggle={() => {
setVisibility(!visibility); setVisibility(!visibility);
visibilityRef.current = !visibility;
}} }}
/> />
)} )}
@ -103,4 +111,4 @@ const ManifestSelect = (props: IManifestSelectProps) => {
); );
}; };
export default ManifestSelect; export default Header;

@ -1,7 +1,6 @@
import { useEffect, useState, useRef } from "react"; import { useEffect, useState, useRef } from "react";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
import { Dictionary, omit } from "lodash"; import { Dictionary, omit, remove } from "lodash";
import _ from "lodash";
import { GlobeAltIcon, CubeIcon, FolderAddIcon } from "@heroicons/react/solid"; import { GlobeAltIcon, CubeIcon, FolderAddIcon } from "@heroicons/react/solid";
import { import {
IServiceNodeItem, IServiceNodeItem,
@ -135,9 +134,9 @@ export default function Project(props: IProjectProps) {
data: { data: {
canvas: { canvas: {
position: canvasPosition, position: canvasPosition,
nodes: nodes, nodes: stateNodesRef.current,
connections: connections, connections: stateConnectionsRef.current,
networks: networks networks: stateNetworksRef.current
} }
} }
}; };
@ -279,7 +278,7 @@ export default function Project(props: IProjectProps) {
dependsOnKeys.forEach((key: string) => { dependsOnKeys.forEach((key: string) => {
if (key === targetServiceName) { if (key === targetServiceName) {
if (Array.isArray(sourceDependsOn)) { if (Array.isArray(sourceDependsOn)) {
_.remove(sourceDependsOn, (key) => key === targetServiceName); remove(sourceDependsOn, (key) => key === targetServiceName);
} }
if (sourceDependsOn && sourceDependsOn.constructor === Object) { if (sourceDependsOn && sourceDependsOn.constructor === Object) {

Loading…
Cancel
Save