deeply compare old and new params

This commit is contained in:
Kurt Hutten
2021-08-07 21:26:11 +10:00
parent 454995304a
commit dcd9d42d32
8 changed files with 9 additions and 4 deletions

View File

@@ -22,7 +22,7 @@ const Customizer = () => {
currentParameters || {}, currentParameters || {},
(values, source) => { (values, source) => {
thunkDispatch({ type: 'setCurrentCustomizerParams', payload: values }) thunkDispatch({ type: 'setCurrentCustomizerParams', payload: values })
if (shouldLiveUpdate && source !== 'group') { if (shouldLiveUpdate) {
handleRender() handleRender()
} }
}, },

View File

@@ -74,6 +74,7 @@ export const makeStlDownloadHandler =
camera: state.camera, camera: state.camera,
quality: 'high', quality: 'high',
specialCadProcess, specialCadProcess,
parameters: state.currentParameters,
}).then((result) => result && saveFile(result.data)) }).then((result) => result && saveFile(result.data))
}) })
} }

View File

@@ -62,6 +62,7 @@ const IdeEditor = ({ Loading }) => {
code: state.code, code: state.code,
viewerSize: state.viewerSize, viewerSize: state.viewerSize,
camera: state.camera, camera: state.camera,
parameters: state.currentParameters,
}) })
}) })
localStorage.setItem(makeCodeStoreKey(state.ideType), state.code) localStorage.setItem(makeCodeStoreKey(state.ideType), state.code)

View File

@@ -211,6 +211,7 @@ const IdeViewer = ({ Loading }) => {
code: state.code, code: state.code,
viewerSize: state.viewerSize, viewerSize: state.viewerSize,
camera, camera,
parameters: state.currentParameters,
}) })
} }
}) })

View File

@@ -12,7 +12,7 @@ export const stlToGeometry = (url) =>
export interface RenderArgs { export interface RenderArgs {
code: State['code'] code: State['code']
parameters: any parameters?: RawCustomizerParams
settings: { settings: {
camera: State['camera'] camera: State['camera']
viewerSize: State['viewerSize'] viewerSize: State['viewerSize']

View File

@@ -129,7 +129,7 @@ export const render: DefaultKernelExport['render'] = async ({
scriptWorker.postMessage({ action: 'init', baseURI, alias: [] }) 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 // we are not evaluating code, but reacting to parameters change
scriptWorker.postMessage({ scriptWorker.postMessage({
action: 'updateParams', action: 'updateParams',

View File

@@ -26,6 +26,7 @@ export const use3dViewerResize = () => {
code: state.code, code: state.code,
viewerSize: { width, height }, viewerSize: { width, height },
camera: state.camera, camera: state.camera,
parameters: state.currentParameters,
}) })
} }
}) })

View File

@@ -183,7 +183,7 @@ export const useIdeState = (): [State, (actionOrThunk: any) => any] => {
data: payload.objectData?.data, data: payload.objectData?.data,
}, },
customizerParams: payload.customizerParams || state.customizerParams, customizerParams: payload.customizerParams || state.customizerParams,
currentParameters: payload.currentParameters, currentParameters: Object.keys(payload.currentParameters).length ? payload.currentParameters : state.currentParameters,
consoleMessages: payload.message consoleMessages: payload.message
? [...state.consoleMessages, payload.message] ? [...state.consoleMessages, payload.message]
: payload.message, : payload.message,
@@ -198,6 +198,7 @@ export const useIdeState = (): [State, (actionOrThunk: any) => any] => {
isLoading: false, isLoading: false,
} }
case 'setCurrentCustomizerParams': case 'setCurrentCustomizerParams':
if (!Object.keys(payload).length) return state
return { return {
...state, ...state,
currentParameters: payload, currentParameters: payload,