diff --git a/src/bin/BinVisualizerV2.tsx b/src/bin/BinVisualizerV2.tsx index c51908a..37ed664 100644 --- a/src/bin/BinVisualizerV2.tsx +++ b/src/bin/BinVisualizerV2.tsx @@ -1556,7 +1556,7 @@ export default function BinVisualizer(props: Props) { let device = componentDevices.get(fan.key) if(fanComp && device){ return ( - + ) } })} @@ -1565,7 +1565,7 @@ export default function BinVisualizer(props: Props) { let device = componentDevices.get(heater.key) if(heaterComp && device){ return ( - + ) } })} diff --git a/src/gate/GateDevice.tsx b/src/gate/GateDevice.tsx index f62dd25..a445b28 100644 --- a/src/gate/GateDevice.tsx +++ b/src/gate/GateDevice.tsx @@ -126,9 +126,24 @@ export default function GateDevice(props: Props) { } }, [comprehensiveDevice, gate, linkedCompList, user]); - const gateComponentUpdate = (componentKey: string, gateCompType: pond.GateComponentType) => { + const gateComponentUpdate = (oldKey: string, componentKey: string, gateCompType: pond.GateComponentType) => { + let promises: any[] = [] + if (oldKey !== "") { + //the promise for removing the pref from the old component + promises.push(gateAPI + .updatePrefs( + gate.key, + "component", + device.id() + ":" + oldKey, + pond.GateComponentType.GATE_COMPONENT_TYPE_UNKNOWN, + [gate.key], + ["gate"], + as + )) + } if (componentKey !== "") { - gateAPI + //the promise for adding the pref to the new component + promises.push(gateAPI .updatePrefs( gate.key, "component", @@ -137,11 +152,17 @@ export default function GateDevice(props: Props) { [gate.key], ["gate"], as - ) - .then(resp => { - openSnack("Component Prefence Updated"); - }); + )) } + Promise.all(promises).then(resp => { + openSnack("Component Prefence Updated"); + let clone = cloneDeep(gate.preferences) + clone[oldKey] = pond.GateComponentType.GATE_COMPONENT_TYPE_UNKNOWN + clone[componentKey] = gateCompType + gate.preferences = clone + + }).catch( + ); }; useEffect(() => { @@ -205,7 +226,7 @@ export default function GateDevice(props: Props) { style={{ fontSize: 8 }} onChange={e => { var key = e.target.value as string; - gateComponentUpdate(key, pond.GateComponentType.GATE_COMPONENT_TYPE_AMBIENT); + gateComponentUpdate(ambientKey, key, pond.GateComponentType.GATE_COMPONENT_TYPE_AMBIENT); setAmbientKey(key); if (tempKey === key) { setTempKey(""); @@ -238,6 +259,7 @@ export default function GateDevice(props: Props) { style={{ fontSize: 8 }} onChange={e => { gateComponentUpdate( + tempKey, e.target.value as string, pond.GateComponentType.GATE_COMPONENT_TYPE_TEMP ); @@ -273,6 +295,7 @@ export default function GateDevice(props: Props) { style={{ fontSize: 8 }} onChange={e => { gateComponentUpdate( + pressureKey, e.target.value as string, pond.GateComponentType.GATE_COMPONENT_TYPE_PRESSURE ); diff --git a/src/gate/GateDeviceInteraction.tsx b/src/gate/GateDeviceInteraction.tsx index 55140d4..0303123 100644 --- a/src/gate/GateDeviceInteraction.tsx +++ b/src/gate/GateDeviceInteraction.tsx @@ -100,6 +100,7 @@ export default function GateDeviceInteraction(props: Props) { } else if ( gate.preferences[component.key()] === pond.GateComponentType.GATE_COMPONENT_TYPE_PRESSURE ) { + console.log(component) setPressureComponent(component); setPressureSource( quack.ComponentID.create({ @@ -115,7 +116,7 @@ export default function GateDeviceInteraction(props: Props) { if(compDevice.device){ setDevice(Device.create(compDevice.device)) } - }, [gate, densityTemp, user, compDevice]); + }, [gate, densityTemp, user, compDevice, gate.preferences]); const buttonDisabled = () => { if (greenComponent === undefined) return true