import clsx from 'clsx' import _ from 'lodash' import { ArrowCircleLeftIcon } from '@heroicons/react/solid' import { useState } from 'react' import { Fold } from '../../../../common/fold' import { parseWordsAsTags } from '../../../../common/util/parse' import { Col } from '../../../components/layout/col' import { Spacer } from '../../../components/layout/spacer' import { Page } from '../../../components/page' import { TagsList } from '../../../components/tags-list' import { foldPath, getFoldBySlug, updateFold, } from '../../../lib/firebase/folds' import Custom404 from '../../404' import { SiteLink } from '../../../components/site-link' export async function getStaticProps(props: { params: { foldSlug: string } }) { const { foldSlug } = props.params const fold = await getFoldBySlug(foldSlug) return { props: { fold }, revalidate: 60, // regenerate after a minute } } export async function getStaticPaths() { return { paths: [], fallback: 'blocking' } } export default function EditFoldPage(props: { fold: Fold | null }) { const { fold } = props const [name, setName] = useState(fold?.name ?? '') const [tags, setTags] = useState(fold?.tags.join(', ') ?? '') const [isSubmitting, setIsSubmitting] = useState(false) if (!fold) return const saveDisabled = !name || !tags || (name === fold.name && _.isEqual(parseWordsAsTags(tags), fold.tags)) const onSubmit = async () => { setIsSubmitting(true) await updateFold(fold, { name, tags: parseWordsAsTags(tags) }) setIsSubmitting(false) } return ( {' '} {fold.name} Fold name setName(e.target.value || '')} /> Tags setTags(e.target.value || '')} /> Save ) }