@@ -13,6 +13,7 @@ const EditTaskModal = ({
1313 currentBoard,
1414 setBoardState,
1515 task,
16+ startColumn,
1617} : EditTaskModalProps ) => {
1718 const [ formData , setFormData ] = useState < TaskFormState > ( {
1819 taskname : task . name ,
@@ -23,11 +24,13 @@ const EditTaskModal = ({
2324 const handleFormSubmit = ( e : React . FormEvent < HTMLFormElement > ) => {
2425 e . preventDefault ;
2526 console . log ( "Edit Task Form Submitted: " , formData ) ;
26- // send POST request with the new task card, user and current board
27+ // send POST request with the new task card, edited task and current board
2728 const fetchEditTask = async ( ) => {
2829 const body = {
2930 ...formData ,
30- taskId : task ?. _id ,
31+ taskId : task . _id ,
32+ boardId : currentBoard . id ,
33+ startColumn : startColumn ,
3134 } ;
3235 const response : Response = await fetch ( `/tasks/edit` , {
3336 method : "POST" ,
@@ -36,14 +39,33 @@ const EditTaskModal = ({
3639 } ,
3740 body : JSON . stringify ( body ) ,
3841 } ) ;
39- const task : TaskState = await response . json ( ) ;
42+ const editedTask : TaskState = await response . json ( ) ;
4043 if ( response . status === 200 ) {
41- console . log ( "edited task: " , task ) ;
4244 // update the board state, removing from array if necessary
43- setBoardState ( ( prevState : BoardState ) => ( {
44- ...prevState ,
45- [ task . status ] : [ ...prevState [ task . status ] , task ] ,
46- } ) ) ;
45+ setBoardState ( ( prevState : BoardState ) => {
46+ const column = [ ...prevState [ startColumn ] ] ;
47+ const idx = column . indexOf ( task ) ;
48+ // if changing columns, remove from startColumn and add to new column
49+ if ( task . status !== editedTask . status ) {
50+ column . splice ( idx , 1 ) ;
51+ return {
52+ ...prevState ,
53+ [ editedTask . status ] : [
54+ ...prevState [ editedTask . status ] ,
55+ editedTask ,
56+ ] ,
57+ [ startColumn ] : column ,
58+ } ;
59+ }
60+ // else update the existing column with new task name and notes
61+ else {
62+ column [ idx ] = editedTask ;
63+ return {
64+ ...prevState ,
65+ [ startColumn ] : column ,
66+ } ;
67+ }
68+ } ) ;
4769 }
4870 } ;
4971 fetchEditTask ( ) . catch ( console . error ) ;
@@ -81,7 +103,7 @@ const EditTaskModal = ({
81103 id = "backlog"
82104 value = { "backlog" }
83105 onChange = { handleInputChange }
84- checked = { task . status === "backlog" }
106+ defaultChecked = { task . status === "backlog" }
85107 />
86108 < label htmlFor = "backlog" > Backlog</ label >
87109 < input
@@ -90,7 +112,7 @@ const EditTaskModal = ({
90112 id = "in-progress"
91113 value = { "inProgress" }
92114 onChange = { handleInputChange }
93- checked = { task . status === "inProgress" }
115+ defaultChecked = { task . status === "inProgress" }
94116 />
95117 < label htmlFor = "in-progress" > In Progress</ label >
96118 < input
@@ -99,7 +121,7 @@ const EditTaskModal = ({
99121 id = "in-review"
100122 value = { "inReview" }
101123 onChange = { handleInputChange }
102- checked = { task . status === "inReview" }
124+ defaultChecked = { task . status === "inReview" }
103125 />
104126 < label htmlFor = "in-review" > In Review</ label >
105127 < input
@@ -108,7 +130,7 @@ const EditTaskModal = ({
108130 id = "completed"
109131 value = { "completed" }
110132 onChange = { handleInputChange }
111- checked = { task . status === "completed" }
133+ defaultChecked = { task . status === "completed" }
112134 />
113135 < label htmlFor = "completed" > Completed</ label >
114136 </ div >
0 commit comments