import { VersionUpdateInput } from '@boring.tools/schema' import { Button, Calendar, Form, FormControl, FormField, FormItem, FormLabel, FormMessage, Popover, PopoverContent, PopoverTrigger, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, cn, } from '@boring.tools/ui' import { zodResolver } from '@hookform/resolvers/zod' import { BlockTypeSelect, BoldItalicUnderlineToggles, ListsToggle, MDXEditor, type MDXEditorMethods, UndoRedo, headingsPlugin, listsPlugin, quotePlugin, thematicBreakPlugin, toolbarPlugin, } from '@mdxeditor/editor' import { createFileRoute, useNavigate } from '@tanstack/react-router' import { useForm } from 'react-hook-form' import type { z } from 'zod' import { useChangelogVersionById, useChangelogVersionUpdate, } from '../hooks/useChangelog' import '@mdxeditor/editor/style.css' import { format } from 'date-fns' import { CalendarIcon } from 'lucide-react' import { useEffect, useRef } from 'react' import { ChangelogVersionDelete } from '../components/Changelog/VersionDelete' import { VersionStatus } from '../components/Changelog/VersionStatus' const Component = () => { const { id, versionId } = Route.useParams() const mdxEditorRef = useRef(null) const navigate = useNavigate({ from: `/changelog/${id}/versionCreate` }) const versionUpdate = useChangelogVersionUpdate() const { data, error, isPending, refetch } = useChangelogVersionById({ id: versionId, }) const form = useForm>({ resolver: zodResolver(VersionUpdateInput), defaultValues: data, }) const onSubmit = (values: z.infer) => { versionUpdate.mutate( { id: versionId, payload: values }, { onSuccess() { navigate({ to: '/changelog/$id', params: { id } }) }, }, ) } useEffect(() => { if (data) { mdxEditorRef.current?.setMarkdown(data.markdown) form.reset(data) } }, [data, form.reset]) if (error) { return (

Changelogs

Please try again later

) } return (

{!isPending && data && (

Version: {data.version}

( Notes ( <> ), }), ]} /> {' '} )} />
( Status )} /> ( Released at field.onChange(date)} weekStartsOn={1} /> )} />
)}
) } export const Route = createFileRoute('/changelog/$id/version/$versionId')({ component: Component, })