From 1be0facd6422492913669c9b6aac9ee61a432d64 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Fri, 1 Nov 2024 21:15:46 +0100 Subject: [PATCH] feat(app): changelog version auto create --- .../Changelog/Version/Create/Step01.tsx | 16 ++-- .../Changelog/Version/Create/Step02.tsx | 74 ++++++++++++++++++ .../Changelog/Version/Create/index.tsx | 17 +++- apps/app/src/hooks/useChangelog.ts | 25 ++++++ .../changelog.$id.version.$versionId.tsx | 6 +- apps/app/src/routes/changelog.create.lazy.tsx | 28 +++++++ bruno/Changelog/Version/Create Auto.bru | 22 ++++++ bruno/Statistic.bru | 2 +- bruno/environments/Development.bru | 3 + bun.lockb | Bin 544376 -> 545112 bytes packages/schema/src/changelog/create.ts | 1 + packages/schema/src/version/create.ts | 9 +++ 12 files changed, 191 insertions(+), 12 deletions(-) create mode 100644 apps/app/src/components/Changelog/Version/Create/Step02.tsx create mode 100644 bruno/Changelog/Version/Create Auto.bru diff --git a/apps/app/src/components/Changelog/Version/Create/Step01.tsx b/apps/app/src/components/Changelog/Version/Create/Step01.tsx index c6d30fc..ebf11c9 100644 --- a/apps/app/src/components/Changelog/Version/Create/Step01.tsx +++ b/apps/app/src/components/Changelog/Version/Create/Step01.tsx @@ -1,17 +1,21 @@ import { Link, useParams } from '@tanstack/react-router' import { HandIcon, WorkflowIcon } from 'lucide-react' -export const ChangelogVersionCreateStep01 = () => { +export const ChangelogVersionCreateStep01 = ({ + nextStep, +}: { nextStep: () => void }) => { const { id } = useParams({ from: '/changelog/$id' }) + return (
-
+
+ { + const { id } = useParams({ from: '/changelog/$id' }) + const navigate = useNavigate({ from: `/changelog/${id}` }) + const autoVersion = useChangelogVersionCreateAuto() + + const form = useForm>({ + resolver: zodResolver(VersionCreateAutoInput), + defaultValues: { + changelogId: id, + version: null, + }, + }) + + const onSubmit = (values: z.infer) => { + autoVersion.mutate(values, { + onSuccess(data) { + navigate({ + to: '/changelog/$id/version/$versionId', + params: { id, versionId: data.id }, + }) + }, + }) + } + + return ( +
+
+ + ( + + Version + + + {' '} + + Leave blank for auto generating. + + + + )} + /> + +
+ +
+ + +
+ ) +} diff --git a/apps/app/src/components/Changelog/Version/Create/index.tsx b/apps/app/src/components/Changelog/Version/Create/index.tsx index 466de35..f78cbc5 100644 --- a/apps/app/src/components/Changelog/Version/Create/index.tsx +++ b/apps/app/src/components/Changelog/Version/Create/index.tsx @@ -7,11 +7,23 @@ import { DialogTrigger, } from '@boring.tools/ui' import { PlusCircleIcon } from 'lucide-react' +import { useEffect, useState } from 'react' import { ChangelogVersionCreateStep01 } from './Step01' +import { ChangelogVersionCreateStep02 } from './Step02' export const ChangelogVersionCreate = () => { + const [isOpen, setIsOpen] = useState(false) + const [step, setStep] = useState(1) + const nextStep = () => setStep((prev) => prev + 1) + + useEffect(() => { + if (!isOpen) { + setStep(1) + } + }, [isOpen]) + return ( - + setIsOpen(state)}> @@ -25,7 +37,8 @@ export const ChangelogVersionCreate = () => { - + {step === 1 && } + {step === 2 && } ) diff --git a/apps/app/src/hooks/useChangelog.ts b/apps/app/src/hooks/useChangelog.ts index 86757c4..a28660d 100644 --- a/apps/app/src/hooks/useChangelog.ts +++ b/apps/app/src/hooks/useChangelog.ts @@ -3,6 +3,7 @@ import type { ChangelogOutput, ChangelogUpdateInput, CommitOutput, + VersionCreateAutoInput, VersionCreateInput, VersionOutput, VersionUpdateInput, @@ -18,6 +19,7 @@ type ChangelogUpdate = z.infer type Version = z.infer type VersionCreate = z.infer +type VersionCreateAuto = z.infer type VersionUpdate = z.infer type Commit = z.infer @@ -155,6 +157,29 @@ export const useChangelogVersionCreate = () => { }) } +export const useChangelogVersionCreateAuto = () => { + const { getToken } = useAuth() + const queryClient = useQueryClient() + + return useMutation({ + mutationFn: async ( + payload: VersionCreateAuto, + ): Promise> => + await queryFetch({ + path: 'changelog/version/auto', + data: payload, + method: 'post', + token: await getToken(), + }), + onSuccess: (data) => { + queryClient.invalidateQueries({ queryKey: ['changelogList'] }) + queryClient.invalidateQueries({ + queryKey: ['changelogById', data.changelogId], + }) + }, + }) +} + export const useChangelogVersionById = ({ id }: { id: string }) => { const { getToken } = useAuth() diff --git a/apps/app/src/routes/changelog.$id.version.$versionId.tsx b/apps/app/src/routes/changelog.$id.version.$versionId.tsx index 2cc605c..2e3ab74 100644 --- a/apps/app/src/routes/changelog.$id.version.$versionId.tsx +++ b/apps/app/src/routes/changelog.$id.version.$versionId.tsx @@ -43,7 +43,7 @@ import { import '@mdxeditor/editor/style.css' import { format } from 'date-fns' import { CalendarIcon } from 'lucide-react' -import { useEffect, useRef } from 'react' +import { useEffect, useRef, useState } from 'react' import { ChangelogVersionDelete } from '../components/Changelog/VersionDelete' import { VersionStatus } from '../components/Changelog/VersionStatus' @@ -55,6 +55,7 @@ const Component = () => { const { data, error, isPending, refetch } = useChangelogVersionById({ id: versionId, }) + const [editorValue, setEditorValue] = useState('') const form = useForm>({ resolver: zodResolver(VersionUpdateInput), defaultValues: data, @@ -74,9 +75,8 @@ const Component = () => { useEffect(() => { if (data) { mdxEditorRef.current?.setMarkdown(data.markdown) - form.reset(data) } - }, [data, form.reset]) + }, [data]) if (error) { return ( diff --git a/apps/app/src/routes/changelog.create.lazy.tsx b/apps/app/src/routes/changelog.create.lazy.tsx index bb4c93c..1a28d84 100644 --- a/apps/app/src/routes/changelog.create.lazy.tsx +++ b/apps/app/src/routes/changelog.create.lazy.tsx @@ -29,6 +29,7 @@ const Component = () => { title: '', description: '', isSemver: true, + isConventional: true, }, }) @@ -115,6 +116,33 @@ const Component = () => { )} /> + + ( + + + + +
+ Using Conventional Commits + + If this changelog is using{' '} + + conventional commits + + +
+
+ )} + /> diff --git a/bruno/Changelog/Version/Create Auto.bru b/bruno/Changelog/Version/Create Auto.bru new file mode 100644 index 0000000..eec0da4 --- /dev/null +++ b/bruno/Changelog/Version/Create Auto.bru @@ -0,0 +1,22 @@ +meta { + name: Create Auto + type: http + seq: 1 +} + +post { + url: {{API_URL}}/v1/changelog/version/auto + body: json + auth: bearer +} + +auth:bearer { + token: {{TOKEN}} +} + +body:json { + { + "changelogId": "d83fe688-3331-4e64-9af6-318f82e511d4", + "commitIds": ["01cc79df-6d16-4496-b9ba-b238d686efc4"] + } +} diff --git a/bruno/Statistic.bru b/bruno/Statistic.bru index b12472d..786d7c1 100644 --- a/bruno/Statistic.bru +++ b/bruno/Statistic.bru @@ -11,5 +11,5 @@ get { } auth:bearer { - token: bt_7b83481e2ae0f6ab728730511adbe491f6668eb3 + token: {{TOKEN}} } diff --git a/bruno/environments/Development.bru b/bruno/environments/Development.bru index fcbed5b..c47f8eb 100644 --- a/bruno/environments/Development.bru +++ b/bruno/environments/Development.bru @@ -1,3 +1,6 @@ vars { API_URL: http://localhost:3000 } +vars:secret [ + TOKEN +] diff --git a/bun.lockb b/bun.lockb index 63fa326fb9454e0424f1c3ae05add8c2cdf156c7..63514d498b51f6e604acd26c0cf637617bd4dbe1 100755 GIT binary patch delta 39852 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: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 delta 39168 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 KS91T5YySrwWiN;T diff --git a/packages/schema/src/changelog/create.ts b/packages/schema/src/changelog/create.ts index e038d83..900d40e 100644 --- a/packages/schema/src/changelog/create.ts +++ b/packages/schema/src/changelog/create.ts @@ -7,6 +7,7 @@ export const ChangelogCreateInput = z title: z.string().min(3, 'Title must contain at least 3 charachters.'), description: z.string(), isSemver: z.boolean().default(true), + isConventional: z.boolean().default(true), }) .openapi({ required: ['title', 'userId'], diff --git a/packages/schema/src/version/create.ts b/packages/schema/src/version/create.ts index 2256a4d..4cc5169 100644 --- a/packages/schema/src/version/create.ts +++ b/packages/schema/src/version/create.ts @@ -14,3 +14,12 @@ export const VersionCreateInput = z .openapi({ required: ['changelogId', 'version', 'markdown', 'releasedAt'], }) + +export const VersionCreateAutoInput = z + .object({ + version: z.string().optional().nullable(), + changelogId: z.string().uuid(), + }) + .openapi({ + required: ['changelogId'], + })