1
0
Fork 0
freesewing/sites/org/page-templates/edit-pattern.mjs
joostdecock d442e23d69 fix(shared): Saving pattern in edit mode
This reverts the temporary fix for #5534
(commit 99b6e75956 )
and implements a proper fix.

This also closes #5570 as that was a side-effect of the initial
half-assed fix.
2023-12-09 16:11:09 +01:00

86 lines
2.6 KiB
JavaScript

/*
* This page is auto-generated. Do not edit it by hand.
*/
import { $$Design$$ } from 'designs/$$design$$/src/index.mjs'
// Dependencies
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { nsMerge, getSearchParam } from 'shared/utils.mjs'
// Hooks
import { useState, useEffect, useContext } from 'react'
import { useTranslation } from 'next-i18next'
import { useBackend } from 'shared/hooks/use-backend.mjs'
// Context
import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
// Components
import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
import { Loading } from 'shared/components/spinner.mjs'
// Translation namespaces used on this page
const ns = nsMerge('$$design$$', wbNs, pageNs)
const EditDesignComponent = ({ id, design, Design, settings }) => (
<Workbench preload={{ settings }} saveAs={{ pattern: id }} {...{ design, Design }} />
)
const Edit$$Design$$Page = ({ page }) => {
const { setLoadingStatus } = useContext(LoadingStatusContext)
const backend = useBackend()
const { t } = useTranslation(ns)
const [pattern, setPattern] = useState(false)
useEffect(() => {
const getPattern = async () => {
setLoadingStatus([true, t('backendLoadingStarted')])
let result
try {
result = await backend.getPattern(id)
if (result.success) {
setPattern(result.data.pattern)
setLoadingStatus([true, 'backendLoadingCompleted', true, true])
} else setLoadingStatus([true, 'backendError', true, false])
} catch (err) {
console.log(err)
setLoadingStatus([true, 'backendError', true, false])
}
}
const id = getSearchParam('id')
if (id) getPattern()
}, [backend, setLoadingStatus, t])
return (
// prettier-ignore
<PageWrapper {...page} title="$$Design$$" layout={pattern ? WorkbenchLayout : false} header={null}>
{pattern ? (
<EditDesignComponent
id={pattern.id}
settings={pattern.settings}
design="$$design$$"
Design={$$Design$$}
/>
) : (
<div>
<h1>{t('account:oneMomentPLease')}</h1>
<Loading />
</div>
)}
</PageWrapper>
)
}
export default Edit$$Design$$Page
export async function getStaticProps({ locale }) {
return {
props: {
...(await serverSideTranslations(locale, ns)),
page: {
locale,
path: ['account', 'patterns', '$$design$$'],
title: '$$Design$$',
},
},
}
}