From dcd9d42d3273587a52691fd2c3399fa2e6368ec3 Mon Sep 17 00:00:00 2001 From: Kurt Hutten Date: Sat, 7 Aug 2021 21:26:11 +1000 Subject: [PATCH] deeply compare old and new params --- app/web/src/components/Customizer/Customizer.tsx | 2 +- app/web/src/components/EditorMenu/helpers.ts | 1 + app/web/src/components/IdeEditor/IdeEditor.tsx | 1 + app/web/src/components/IdeViewer/IdeViewer.tsx | 1 + app/web/src/helpers/cadPackages/common.ts | 2 +- app/web/src/helpers/cadPackages/jsCad/jsCadController.ts | 2 +- app/web/src/helpers/hooks/use3dViewerResize.ts | 1 + app/web/src/helpers/hooks/useIdeState.ts | 3 ++- 8 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/web/src/components/Customizer/Customizer.tsx b/app/web/src/components/Customizer/Customizer.tsx index adcd82c..d418538 100644 --- a/app/web/src/components/Customizer/Customizer.tsx +++ b/app/web/src/components/Customizer/Customizer.tsx @@ -22,7 +22,7 @@ const Customizer = () => { currentParameters || {}, (values, source) => { thunkDispatch({ type: 'setCurrentCustomizerParams', payload: values }) - if (shouldLiveUpdate && source !== 'group') { + if (shouldLiveUpdate) { handleRender() } }, diff --git a/app/web/src/components/EditorMenu/helpers.ts b/app/web/src/components/EditorMenu/helpers.ts index 0ced278..6caaa14 100644 --- a/app/web/src/components/EditorMenu/helpers.ts +++ b/app/web/src/components/EditorMenu/helpers.ts @@ -74,6 +74,7 @@ export const makeStlDownloadHandler = camera: state.camera, quality: 'high', specialCadProcess, + parameters: state.currentParameters, }).then((result) => result && saveFile(result.data)) }) } diff --git a/app/web/src/components/IdeEditor/IdeEditor.tsx b/app/web/src/components/IdeEditor/IdeEditor.tsx index 2a514f5..1a5f6c6 100644 --- a/app/web/src/components/IdeEditor/IdeEditor.tsx +++ b/app/web/src/components/IdeEditor/IdeEditor.tsx @@ -62,6 +62,7 @@ const IdeEditor = ({ Loading }) => { code: state.code, viewerSize: state.viewerSize, camera: state.camera, + parameters: state.currentParameters, }) }) localStorage.setItem(makeCodeStoreKey(state.ideType), state.code) diff --git a/app/web/src/components/IdeViewer/IdeViewer.tsx b/app/web/src/components/IdeViewer/IdeViewer.tsx index 0ac5421..3aa0c10 100644 --- a/app/web/src/components/IdeViewer/IdeViewer.tsx +++ b/app/web/src/components/IdeViewer/IdeViewer.tsx @@ -211,6 +211,7 @@ const IdeViewer = ({ Loading }) => { code: state.code, viewerSize: state.viewerSize, camera, + parameters: state.currentParameters, }) } }) diff --git a/app/web/src/helpers/cadPackages/common.ts b/app/web/src/helpers/cadPackages/common.ts index 7c17760..1a5acc1 100644 --- a/app/web/src/helpers/cadPackages/common.ts +++ b/app/web/src/helpers/cadPackages/common.ts @@ -12,7 +12,7 @@ export const stlToGeometry = (url) => export interface RenderArgs { code: State['code'] - parameters: any + parameters?: RawCustomizerParams settings: { camera: State['camera'] viewerSize: State['viewerSize'] diff --git a/app/web/src/helpers/cadPackages/jsCad/jsCadController.ts b/app/web/src/helpers/cadPackages/jsCad/jsCadController.ts index c40594d..f0088da 100644 --- a/app/web/src/helpers/cadPackages/jsCad/jsCadController.ts +++ b/app/web/src/helpers/cadPackages/jsCad/jsCadController.ts @@ -129,7 +129,7 @@ export const render: DefaultKernelExport['render'] = async ({ scriptWorker.postMessage({ action: 'init', baseURI, alias: [] }) } - if (parameters) { + if (parameters && currentParameters && JSON.stringify(parameters) !== JSON.stringify(currentParameters)) { // we are not evaluating code, but reacting to parameters change scriptWorker.postMessage({ action: 'updateParams', diff --git a/app/web/src/helpers/hooks/use3dViewerResize.ts b/app/web/src/helpers/hooks/use3dViewerResize.ts index 9ed6321..dd5fe24 100644 --- a/app/web/src/helpers/hooks/use3dViewerResize.ts +++ b/app/web/src/helpers/hooks/use3dViewerResize.ts @@ -26,6 +26,7 @@ export const use3dViewerResize = () => { code: state.code, viewerSize: { width, height }, camera: state.camera, + parameters: state.currentParameters, }) } }) diff --git a/app/web/src/helpers/hooks/useIdeState.ts b/app/web/src/helpers/hooks/useIdeState.ts index 7423dab..900ceee 100644 --- a/app/web/src/helpers/hooks/useIdeState.ts +++ b/app/web/src/helpers/hooks/useIdeState.ts @@ -183,7 +183,7 @@ export const useIdeState = (): [State, (actionOrThunk: any) => any] => { data: payload.objectData?.data, }, customizerParams: payload.customizerParams || state.customizerParams, - currentParameters: payload.currentParameters, + currentParameters: Object.keys(payload.currentParameters).length ? payload.currentParameters : state.currentParameters, consoleMessages: payload.message ? [...state.consoleMessages, payload.message] : payload.message, @@ -198,6 +198,7 @@ export const useIdeState = (): [State, (actionOrThunk: any) => any] => { isLoading: false, } case 'setCurrentCustomizerParams': + if (!Object.keys(payload).length) return state return { ...state, currentParameters: payload,