@@ -2,22 +2,24 @@ import { useState, useEffect, ChangeEvent } from "react";
22import { useTaskStore } from "@/lib/store/useTaskStore" ;
33import { useModalStore } from "@/lib/store/useModalStore" ;
44import { fetchTaskCardDetail , putCard } from "@/lib/apis/cardsApi" ;
5+ import { postImage } from "@/lib/apis/imageApi" ;
56import Modal from "@/components/common/modal/Modal" ;
67import Input from "@/components/common/input/Input" ;
78import DateInput from "@/components/common/input/DateInput" ;
89import Textarea from "@/components/common/textarea/Textarea" ;
910import TagInput from "@/components/common/input/TagInput" ;
1011import ImageInput from "@/components/common/input/ImageInput" ;
11- import ColumnDropdown from ". /ColumnDropdown" ;
12- import AssigneeDropdown from ". /AssigneeDropdown" ;
12+ import ColumnDropdown from "@/components/modal/edit-task /ColumnDropdown" ;
13+ import AssigneeDropdown from "@/components/modal/edit-task /AssigneeDropdown" ;
1314import { useDashboardStore } from "@/lib/store/useDashboardStore" ;
15+ import Cookies from "js-cookie" ;
1416
1517export default function EditTaskModal ( ) {
1618 const { openModal } = useModalStore ( ) ;
1719 const { selectedTaskId } = useTaskStore ( ) ;
1820 const { dashboardId } = useDashboardStore ( ) ;
1921 const [ isLoading , setIsLoading ] = useState ( false ) ;
20- const accessToken = localStorage . getItem ( "accessToken" ) ?? "" ;
22+ const accessToken = Cookies . get ( "accessToken" ) ?? "" ;
2123
2224 const [ isFormValid , setIsFormValid ] = useState ( false ) ;
2325 const [ selectedColumn , setSelectedColumn ] = useState ( 0 ) ;
@@ -30,6 +32,7 @@ export default function EditTaskModal() {
3032 const [ tagValues , setTagValues ] = useState < string [ ] > ( [ ] ) ;
3133 const [ dueDate , setDueDate ] = useState ( "" ) ;
3234 const [ cardImg , setItemImg ] = useState < string | null > ( null ) ;
35+ const [ isImageUploading , setIsImageUploading ] = useState ( false ) ;
3336
3437 const [ initialValues , setInitialValues ] = useState < {
3538 title : string ;
@@ -104,6 +107,26 @@ export default function EditTaskModal() {
104107 }
105108 } ;
106109
110+ const handleImageUpload = async ( e : React . ChangeEvent < HTMLInputElement > ) => {
111+ const file = e . target . files ?. [ 0 ] ;
112+ if ( ! file ) return ;
113+
114+ setIsImageUploading ( true ) ;
115+ try {
116+ const imageUrl = await postImage (
117+ "task" ,
118+ selectedColumn ,
119+ file ,
120+ accessToken
121+ ) ;
122+ setItemImg ( imageUrl ) ;
123+ } catch ( error ) {
124+ console . error ( "이미지 업로드 에러:" , error ) ;
125+ } finally {
126+ setIsImageUploading ( false ) ;
127+ }
128+ } ;
129+
107130 useEffect ( ( ) => {
108131 handleLoad ( ) ;
109132 } , [ ] ) ;
@@ -184,9 +207,11 @@ export default function EditTaskModal() {
184207 label = "이미지"
185208 variant = "task"
186209 columnId = { selectedColumn }
210+ token = { accessToken }
187211 initialImageUrl = { cardImg }
188212 onImageUrlChange = { ( url ) => setItemImg ( url ) }
189- token = { accessToken }
213+ onChange = { handleImageUpload }
214+ isLoading = { isImageUploading }
190215 />
191216 </ div >
192217 </ Modal >
0 commit comments