diff --git a/frontend/src/components/GenericComponent.tsx b/frontend/src/components/GenericComponent.tsx index 31d3cba..fc2e435 100644 --- a/frontend/src/components/GenericComponent.tsx +++ b/frontend/src/components/GenericComponent.tsx @@ -50,7 +50,7 @@ const createDisplayNameFromAccessPath = (fullAccessPath: string): string => { function changeCallback( value: SerializedObject, - callback: (ack: unknown) => void = () => {}, + callback: (ack: undefined | SerializedObject) => void = () => {}, ) { updateValue(value, callback); } diff --git a/frontend/src/components/NumberComponent.tsx b/frontend/src/components/NumberComponent.tsx index b97b1b5..60b8e11 100644 --- a/frontend/src/components/NumberComponent.tsx +++ b/frontend/src/components/NumberComponent.tsx @@ -38,7 +38,10 @@ interface NumberComponentProps { isInstantUpdate: boolean; unit?: string; addNotification: (message: string, levelname?: LevelName) => void; - changeCallback?: (value: SerializedObject, callback?: (ack: unknown) => void) => void; + changeCallback?: ( + value: SerializedObject, + callback?: (ack: undefined | SerializedObject) => void, + ) => void; displayName?: string; id: string; } @@ -217,6 +220,15 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => { id, } = props; + const handleChange = (newValue: SerializedObject) => { + changeCallback(newValue, (result: undefined | SerializedObject) => { + if (result === undefined) return; + if (result.type == "Exception") { + setInputString(value.toString()); + } + }); + }; + // Create a state for the cursor position const cursorPositionRef = useRef(null); @@ -319,7 +331,7 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => { }; } - changeCallback(serializedObject); + handleChange(serializedObject); return; } else { console.debug(key); @@ -350,7 +362,7 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => { }; } - changeCallback(serializedObject); + handleChange(serializedObject); } setInputString(newValue); @@ -384,7 +396,7 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => { }; } - changeCallback(serializedObject); + handleChange(serializedObject); } }; useEffect(() => { diff --git a/frontend/src/components/SliderComponent.tsx b/frontend/src/components/SliderComponent.tsx index e6405ea..70c659c 100644 --- a/frontend/src/components/SliderComponent.tsx +++ b/frontend/src/components/SliderComponent.tsx @@ -19,7 +19,10 @@ interface SliderComponentProps { stepSize: NumberObject; isInstantUpdate: boolean; addNotification: (message: string, levelname?: LevelName) => void; - changeCallback?: (value: SerializedObject, callback?: (ack: unknown) => void) => void; + changeCallback?: ( + value: SerializedObject, + callback?: (ack: undefined | SerializedObject) => void, + ) => void; displayName: string; id: string; } diff --git a/frontend/src/socket.ts b/frontend/src/socket.ts index 71d3402..ebef0be 100644 --- a/frontend/src/socket.ts +++ b/frontend/src/socket.ts @@ -28,7 +28,7 @@ export const socket = io(URL, { export const updateValue = ( serializedObject: SerializedObject, - callback?: (ack: unknown) => void, + callback?: (ack: undefined | SerializedObject) => void, ) => { if (callback) { socket.emit(