blob: f07189e3d374f70184f39614dfb6d090d3f88b6c [file] [log] [blame]
223010144ce05872025-06-08 22:33:28 +08001import { useCallback, useState } from "react";
2import { useNavigate } from "react-router";
3import type {
4 WorkFormData,
5 BasicInfo,
6 CoverInfo,
7 VersionFormData,
8 ArtworkCategory
9} from './types';
10
11// ==================== Hook ====================
12export const useCreateWorkForm = () => {
13 const navigate = useNavigate();
14 const [currentStep, setCurrentStep] = useState<number>(0);
15 const [formData, setFormData] = useState<WorkFormData>({
16 basicInfo: {
17 artworkName: '',
18 artworkCategory: '概念设计' as ArtworkCategory,
19 artworkDescription: ''
20 },
21 coverInfo: {},
22 versions: [],
23 });
24
25 const handleUpdateFormData = useCallback((field: keyof WorkFormData, value: BasicInfo | CoverInfo | VersionFormData[]) => {
26 setFormData(prev => ({ ...prev, [field]: value }));
27 }, []);
28
29 const handleNext = useCallback(() => setCurrentStep(prev => Math.min(prev + 1, 3)), []);
30 const handlePrev = useCallback(() => setCurrentStep(prev => Math.max(prev - 1, 0)), []);
31 const handlePublish = useCallback(() => navigate('/work/new-work-id'), [navigate]);
32
33 return { currentStep, formData, handleUpdateFormData, handleNext, handlePrev, handlePublish };
34};