diff --git a/src/features/guides/components/Frame.tsx b/src/features/guides/components/Frame.tsx index 110e5ed..c93c1e4 100644 --- a/src/features/guides/components/Frame.tsx +++ b/src/features/guides/components/Frame.tsx @@ -16,9 +16,18 @@ export default function Frame({ }) { return (
- + + + updateStep(frame.id, e.target.value)} + /> {frame.title} - + {frame.steps.map((step: StepType, index: number) => ( updateStep(step.id, e.target.value)} /> - +
); } diff --git a/src/features/guides/hooks/useNewGuide.ts b/src/features/guides/hooks/useNewGuide.ts index 2804bc5..b3db19c 100644 --- a/src/features/guides/hooks/useNewGuide.ts +++ b/src/features/guides/hooks/useNewGuide.ts @@ -1,8 +1,12 @@ import { useState } from "react"; -import { type Frame, type Guide, type Steps } from "../../../lib/schemas"; +import { + type CompiledGuideType, + type FrameType, + type GuideType, +} from "../../../lib/schemas"; export default function useNewGuide() { - const [guide, setGuide] = useState({ + const [guide, setGuide] = useState({ id: crypto.randomUUID(), title: "", description: "", @@ -10,7 +14,7 @@ export default function useNewGuide() { updatedAt: new Date(), deletedAt: undefined, }); - const [frames, setFrames] = useState([]); + const [frames, setFrames] = useState([]); const handleUpdateTitle = (title: string) => { setGuide((prev) => ({ ...prev, title })); @@ -31,6 +35,7 @@ export default function useNewGuide() { return { id: frameId, file: file, + title: "", guideId: guide.id, steps: [{ id: crypto.randomUUID(), text: "", frameId: frameId }], }; @@ -87,9 +92,16 @@ export default function useNewGuide() { ); }; - const handleSaveGuide = () => { - const compiledGuide = { - ...guide, + const handleSaveGuide = (e: React.SubmitEvent) => { + e.preventDefault(); + + const compiledGuide: CompiledGuideType = { + id: guide.id, + title: guide.title, + description: guide.description, + createdAt: guide.createdAt, + updatedAt: guide.updatedAt, + deletedAt: guide.deletedAt, frames, }; diff --git a/src/features/guides/routes/NewGuide.tsx b/src/features/guides/routes/NewGuide.tsx index fb06b09..ff86d88 100644 --- a/src/features/guides/routes/NewGuide.tsx +++ b/src/features/guides/routes/NewGuide.tsx @@ -15,14 +15,10 @@ export default function NewGuide() { handleUpdateStep, handleSaveGuide, } = useNewGuide(); - const handleSubmitForm = (e: React.SubmitEvent) => { - e.preventDefault(); - console.log(e.currentTarget); - }; return (
-
+ handleSaveGuide(e)}>
); diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 3058af3..5239aaa 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -26,3 +26,12 @@ export const GuideSchema = z.object({ export type StepType = z.infer; export type FrameType = z.infer; export type GuideType = z.infer; +export type CompiledGuideType = { + id: string; + title: string; + description: string | undefined; + createdAt: Date; + updatedAt: Date; + deletedAt: Date | undefined; + frames: FrameType[]; +};