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'
// 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,
MeasieIcon,
} 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']
export const ManagePattern = ({ id = false }) => {
// Context
const { addPages } = useContext(NavigationContext)
// State
const [pattern, setPattern] = useState({})
const [error, setError] = useState(false)
// Hooks
const { account, 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