// Dependencies import { capitalize } from 'shared/utils.mjs' import { siteConfig } from 'site/site.config.mjs' import { freeSewingConfig as conf } from 'shared/config/freesewing.config.mjs' import { measurements } from 'config/measurements.mjs' import { measurements as designMeasurements } from 'shared/prebuild/data/design-measurements.mjs' // Context import { LoadingContext } from 'shared/context/loading-context.mjs' import { ModalContext } from 'shared/context/modal-context.mjs' // Hooks import { useState, useEffect, useContext } 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' // Components import { Collapse } from 'shared/components/collapse.mjs' import { ClearIcon, EditIcon, FilterIcon } from 'shared/components/icons.mjs' import Timeago from 'react-timeago' import { PageLink } from 'shared/components/page-link.mjs' import { MeasieRow } from 'shared/components/sets/measie-input.mjs' import { ModalDesignPicker } from 'shared/components/modal/design-picker.mjs' export const ns = ['toast', 'curate', 'sets', 'account'] const EditField = (props) => { if (props.field === 'nameEn') return if (props.field === 'nameDe') return if (props.field === 'nameEs') return if (props.field === 'nameFr') return if (props.field === 'nameNl') return if (props.field === 'notesEn') return if (props.field === 'notesDe') return if (props.field === 'notesEs') return if (props.field === 'notesFr') return if (props.field === 'notesNl') return if (props.field === 'tagsEn') return if (props.field === 'tagsDe') return if (props.field === 'tagsEs') return if (props.field === 'tagsFr') return if (props.field === 'tagsNl') return if (props.field === 'img') return return

FIXME: No edit component for this field

} export const EditRow = (props) => (
{props.title}
{props.children}
} toggle={} toggleClasses="btn btn-secondary" >
) const EditImg = ({ t }) => { return ( , ]} > ) } const EditName = ({ mset, t, lang }) => { return ( {`${t('name')} (${lang.toUpperCase()})`} {mset[`name${capitalize(lang)}`]} } primary buttons={[ , ]} > {mset[`name${capitalize(lang)}`]} ) } const EditNotes = ({ mset, t, lang }) => { return ( {`${t('notes')} (${lang.toUpperCase()})`}} primary buttons={[ , ]} > {mset[`name${capitalize(lang)}`]} ) } const EditTags = ({ mset, t, lang }) => { return ( {`${t('tags')} (${lang.toUpperCase()})`}} primary buttons={[ , ]} > {mset[`name${capitalize(lang)}`]} ) } export const EditCuratedSet = ({ id }) => { // Context const { startLoading, stopLoading } = useContext(LoadingContext) const { setModal } = useContext(ModalContext) // Hooks const { account, token } = useAccount() const backend = useBackend(token) const { t, //i18n } = useTranslation('sets', 'curate', 'toast', 'account') //const { language } = i18n const toast = useToast() // State const [set, setSet] = useState([]) const [reload] = useState(0) const [filter, setFilter] = useState(false) // Force a refresh //const refresh = () => setReload(reload + 1) // Effects useEffect(() => { const getCuratedSet = async () => { const result = await backend.getCuratedSet(id) if (result.success) { setSet(result.data.curatedSet) } } getCuratedSet() }, [reload, backend, id]) const editProps = { startLoading, stopLoading, account, backend, t, toast, mset: set, curated: true, } const filterMeasurements = () => { if (!filter) return measurements.map((m) => t(`measurements:${m}`)).sort() else return designMeasurements[filter].map((m) => t(`measurements:${m}`)).sort() } return (
{/* Meta info */} {account.control > 2 ? (
{t('permalink')}:
{t('created')}:
{t('updated')}:
) : null} {/* JSON & YAML links */} {account.control > 3 ? ( ) : null}

{t('account:data')}

{/* img: Control level determines whether or not to show this */} {account.control >= conf.account.sets.img ? ( ) : null} {/* Name is always shown */} {siteConfig.languages.map((lang) => ( {set[`name${capitalize(lang)}`]} ))} {/* Notes are always shown */} {account.control >= conf.account.sets.notes ? siteConfig.languages.map((lang) => ( {set[`notes${capitalize(lang)}`]} )) : null}

{t('account:measies')}

{filterMeasurements().map((m) => ( ))}
) }