1
0
Fork 0
freesewing/sites/shared/components/workbench/draft/index.js
Joost De Cock 640b7231be fix(shared): Avoid flash of draft error before re-render
When measurments are missing, the useEffect hook will rerender to show
the measurements page. However, before that happens there's a brief
flash of the (failed) draft because it errors without the measurements.

This prevents that by passing down whether or not all required
measurements are available, and if not the draft returns null
2022-06-23 10:11:41 +02:00

40 lines
1.1 KiB
JavaScript

import SvgWrapper from './svg-wrapper'
import Error from './error.js'
import Robot from 'shared/components/robot/index.js'
const LabDraft = props => {
const { app, draft, design, gist, updateGist, unsetGist, showInfo, feedback, hasRequiredMeasurements } = props
if (!draft || !hasRequiredMeasurements) return null
// Render as SVG
if (gist?.renderer === 'svg') {
let svg
try { svg = draft.render() }
catch(error) {
console.log('Failed to render design', error)
return <Error error={error} {...props} />
}
return <div dangerouslySetInnerHTML={{ __html: svg }} />
}
// Render as React
let patternProps = {}
try { patternProps = draft.getRenderProps() }
catch(error) {
console.log('Failed to get render props for design', error)
return <Error error={error} {...props} />
}
return (
<>
{(!patternProps || patternProps.events.error.length > 0)
? <Error {...{ draft, patternProps, updateGist }} />
: null
}
<SvgWrapper {...{ draft, patternProps, gist, updateGist, unsetGist, showInfo, app, feedback }} />
</>
)
}
export default LabDraft