@@ -46,7 +46,7 @@ import {
4646 useImportWorkflow ,
4747 useImportWorkspace ,
4848} from '@/app/workspace/[workspaceId]/w/hooks'
49- import { useTasks } from '@/hooks/queries/tasks'
49+ import { useDeleteTask , useTasks } from '@/hooks/queries/tasks'
5050import { usePermissionConfig } from '@/hooks/use-permission-config'
5151import { SIDEBAR_WIDTH } from '@/stores/constants'
5252import { useFolderStore } from '@/stores/folders/store'
@@ -183,6 +183,7 @@ export const Sidebar = memo(function Sidebar() {
183183 } )
184184
185185 const [ activeNavItemHref , setActiveNavItemHref ] = useState < string | null > ( null )
186+ const [ activeTaskId , setActiveTaskId ] = useState < string | null > ( null )
186187 const {
187188 isOpen : isNavContextMenuOpen ,
188189 position : navContextMenuPosition ,
@@ -191,9 +192,21 @@ export const Sidebar = memo(function Sidebar() {
191192 closeMenu : closeNavContextMenu ,
192193 } = useContextMenu ( )
193194
195+ const deleteTaskMutation = useDeleteTask ( workspaceId )
196+
194197 const handleNavItemContextMenu = useCallback (
195198 ( e : React . MouseEvent , href : string ) => {
196199 setActiveNavItemHref ( href )
200+ setActiveTaskId ( null )
201+ handleNavContextMenuBase ( e )
202+ } ,
203+ [ handleNavContextMenuBase ]
204+ )
205+
206+ const handleTaskContextMenu = useCallback (
207+ ( e : React . MouseEvent , href : string , taskId : string ) => {
208+ setActiveNavItemHref ( href )
209+ setActiveTaskId ( taskId )
197210 handleNavContextMenuBase ( e )
198211 } ,
199212 [ handleNavContextMenuBase ]
@@ -202,6 +215,7 @@ export const Sidebar = memo(function Sidebar() {
202215 const handleNavContextMenuClose = useCallback ( ( ) => {
203216 closeNavContextMenu ( )
204217 setActiveNavItemHref ( null )
218+ setActiveTaskId ( null )
205219 } , [ closeNavContextMenu ] )
206220
207221 const handleNavOpenInNewTab = useCallback ( ( ) => {
@@ -221,6 +235,18 @@ export const Sidebar = memo(function Sidebar() {
221235 }
222236 } , [ activeNavItemHref ] )
223237
238+ const handleDeleteTask = useCallback ( ( ) => {
239+ if ( ! activeTaskId ) return
240+ const isViewingDeletedTask = pathname === `/workspace/${ workspaceId } /task/${ activeTaskId } `
241+ deleteTaskMutation . mutate ( activeTaskId , {
242+ onSuccess : ( ) => {
243+ if ( isViewingDeletedTask ) {
244+ router . push ( `/workspace/${ workspaceId } /home` )
245+ }
246+ } ,
247+ } )
248+ } , [ activeTaskId , pathname , workspaceId , deleteTaskMutation , router ] )
249+
224250 const { handleDuplicateWorkspace : duplicateWorkspace } = useDuplicateWorkspace ( {
225251 workspaceId,
226252 } )
@@ -687,7 +713,7 @@ export const Sidebar = memo(function Sidebar() {
687713 key = { task . id }
688714 href = { task . href }
689715 className = { `mx-[2px] flex h-[28px] items-center gap-[8px] rounded-[8px] px-[8px] text-[14px] hover:bg-[var(--surface-6)] dark:hover:bg-[var(--surface-5)] ${ active ? 'bg-[var(--surface-6)] dark:bg-[var(--surface-5)]' : '' } ` }
690- onContextMenu = { ( e ) => handleNavItemContextMenu ( e , task . href ) }
716+ onContextMenu = { ( e ) => handleTaskContextMenu ( e , task . href , task . id ) }
691717 >
692718 < Blimp className = { `h-[14px] w-[14px] flex-shrink-0 ${ textColor } ` } />
693719 < div className = { `min-w-0 truncate font-medium ${ textColor } ` } > { task . name } </ div >
@@ -813,6 +839,7 @@ export const Sidebar = memo(function Sidebar() {
813839 onClose = { handleNavContextMenuClose }
814840 onOpenInNewTab = { handleNavOpenInNewTab }
815841 onCopyLink = { handleNavCopyLink }
842+ onDelete = { activeTaskId ? handleDeleteTask : undefined }
816843 />
817844 </ div >
818845
0 commit comments