import { freeSewingConfig as conf } from 'shared/config/freesewing.config.mjs' // Hooks import { useState, useContext, useEffect } from 'react' import { useTranslation } from 'next-i18next' import { useAccount } from 'shared/hooks/use-account.mjs' import { useBackend } from 'shared/hooks/use-backend.mjs' import { useToast } from 'shared/hooks/use-toast.mjs' // Context import { NavigationContext } from 'shared/context/navigation-context.mjs' import { LoadingContext } from 'shared/context/loading-context.mjs' // Components import Markdown from 'react-markdown' import { Spinner } from 'shared/components/spinner.mjs' import { Error404, ns as ns404 } from 'shared/components/errors/404.mjs' import { PatternPreview } from 'shared/components/pattern/preview.mjs' import { SettingsIcon, DownloadIcon, TrashIcon, OkIcon, NoIcon, DesignIcon, MeasureIcon, } from 'shared/components/icons.mjs' import { capitalize } from 'shared/utils.mjs' import Link from 'next/link' import Timeago from 'react-timeago' import { PageLink } from 'shared/components/page-link.mjs' import { Popout } from 'shared/components/popout.mjs' import { EditRow } from 'shared/components/account/patterns.mjs' export const ns = [...ns404, 'toast'] const ManageOwnPattern = ({ pattern }) => { return
Manage own pattern
} const ManagePublicPattern = ({ pattern }) => { returnManage public pattern
} const AccessDenied = ({ pattern }) => { returnAccess Denied
} export const ManagePattern = ({ id = false }) => { // Context const { addPages } = useContext(NavigationContext) const { loading, startLoading, stopLoading } = useContext(LoadingContext) // State const [pattern, setPattern] = useState({}) const [error, setError] = useState(false) const [fresh, setFresh] = useState(0) // Hooks const { account, setAccount, token } = useAccount() const backend = useBackend(token) const { t, i18n } = useTranslation(ns) const { language } = i18n const toast = useToast() // async effect helper const loadPattern = async () => { const result = await backend.getPattern(id) if (result.success) { if (result.data.pattern) { setPattern(result.data.pattern) addPages([ [ ['patterns', '' + result.data.pattern.id], { t: result.data.pattern.name, s: `patterns/${pattern.id}` }, ], ]) } } else { if (result.response.response.status === 404) setError(404) } } // Effect useEffect(() => { if (id && Number(id) !== pattern.id) loadPattern() }, [id, pattern.id]) if (error === 404) return