@@ -6,6 +6,7 @@ import { getTasksByStatus, statuses, TasksByStatus } from '.';
66import { useSetTaskStatus } from '../../../../../hooks/tasks.hooks' ;
77import { useToast } from '../../../../../hooks/toasts.hooks' ;
88import { TaskColumn } from './TaskColumn' ;
9+ import confetti from 'canvas-confetti' ;
910
1011interface TaskListProps {
1112 project : Project ;
@@ -79,8 +80,17 @@ export const TaskListContent = ({ project }: TaskListProps) => {
7980 ) ;
8081
8182 //trigger the mutation to persist the changes
82- setTaskStatus ( { taskId : sourcePost . taskId , status : destinationStatus } ) . catch ( ( error ) => {
83- toast . error ( error . message ) ;
83+ try {
84+ await setTaskStatus ( { taskId : sourcePost . taskId , status : destinationStatus } ) ;
85+ const confettiPositions = [ 0 , 0.15 , 0.3 , 0.45 , 0.6 , 0.75 , 0.9 ] ;
86+ if ( destinationStatus === 'DONE' ) {
87+ confettiPositions . forEach ( ( xPos : number ) => {
88+ confetti ( { origin : { y : - 0.5 , x : xPos } , angle : 270 , gravity : 1.5 , startVelocity : 35 , spread : 70 , particleCount : 25 } ) ;
89+ } ) ;
90+ }
91+ } catch ( error ) {
92+ if ( error instanceof Error ) toast . error ( error . message ) ;
93+ //revert optimistic updates
8494 setTasksByStatus (
8595 updateTaskStatusLocal (
8696 sourcePost ,
@@ -89,7 +99,7 @@ export const TaskListContent = ({ project }: TaskListProps) => {
8999 tasksByStatus
90100 )
91101 ) ;
92- } ) ;
102+ }
93103 } ;
94104
95105 return (
0 commit comments