Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
remove redundant checks
  • Loading branch information
icecrasher321 committed Dec 5, 2025
commit 91147471eefd44e70877214c674f0514c882e08e
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ interface ContextMenuProps {
* Set to true when user lacks permissions
*/
disableDelete?: boolean
/**
* Whether the create option is disabled (default: false)
* Set to true when creation is in progress or user lacks permissions
*/
disableCreate?: boolean
}

/**
Expand Down Expand Up @@ -108,6 +113,7 @@ export function ContextMenu({
disableRename = false,
disableDuplicate = false,
disableDelete = false,
disableCreate = false,
}: ContextMenuProps) {
return (
<Popover open={isOpen} onOpenChange={onClose}>
Expand All @@ -125,10 +131,8 @@ export function ContextMenu({
<PopoverItem
disabled={disableRename}
onClick={() => {
if (!disableRename) {
onRename()
onClose()
}
onRename()
onClose()
}}
>
<Pencil className='h-3 w-3' />
Expand All @@ -137,6 +141,7 @@ export function ContextMenu({
)}
{showCreate && onCreate && (
<PopoverItem
disabled={disableCreate}
onClick={() => {
onCreate()
onClose()
Expand All @@ -150,10 +155,8 @@ export function ContextMenu({
<PopoverItem
disabled={disableDuplicate}
onClick={() => {
if (!disableDuplicate) {
onDuplicate()
onClose()
}
onDuplicate()
onClose()
}}
>
<Copy className='h-3 w-3' />
Expand All @@ -164,10 +167,8 @@ export function ContextMenu({
<PopoverItem
disabled={disableExport}
onClick={() => {
if (!disableExport) {
onExport()
onClose()
}
onExport()
onClose()
}}
>
<ArrowUp className='h-3 w-3' />
Expand All @@ -177,10 +178,8 @@ export function ContextMenu({
<PopoverItem
disabled={disableDelete}
onClick={() => {
if (!disableDelete) {
onDelete()
onClose()
}
onDelete()
onClose()
}}
>
<Trash className='h-3 w-3' />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { useCallback, useState } from 'react'
import clsx from 'clsx'
import { ChevronRight, Folder, FolderOpen } from 'lucide-react'
import { useParams, useRouter } from 'next/navigation'
import { createLogger } from '@/lib/logs/console/logger'
import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider'
import { ContextMenu } from '@/app/workspace/[workspaceId]/w/components/sidebar/components-new/workflow-list/components/context-menu/context-menu'
import { DeleteModal } from '@/app/workspace/[workspaceId]/w/components/sidebar/components-new/workflow-list/components/delete-modal/delete-modal'
Expand All @@ -22,6 +23,8 @@ import {
getNextWorkflowColor,
} from '@/stores/workflows/registry/utils'

const logger = createLogger('FolderItem')

interface FolderItemProps {
folder: FolderTreeNode
level: number
Expand Down Expand Up @@ -66,25 +69,27 @@ export function FolderItem({ folder, level, hoverHandlers }: FolderItemProps) {
/**
* Handle create workflow in folder using React Query mutation.
* Generates name and color upfront for optimistic UI updates.
* The UI disables the trigger when isPending, so no guard needed here.
*/
const handleCreateWorkflowInFolder = useCallback(async () => {
if (createWorkflowMutation.isPending) {
return
}

// Generate name and color upfront for optimistic updates
const name = generateCreativeWorkflowName()
const color = getNextWorkflowColor()
try {
// Generate name and color upfront for optimistic updates
const name = generateCreativeWorkflowName()
const color = getNextWorkflowColor()

const result = await createWorkflowMutation.mutateAsync({
workspaceId,
folderId: folder.id,
name,
color,
})
const result = await createWorkflowMutation.mutateAsync({
workspaceId,
folderId: folder.id,
name,
color,
})

if (result.id) {
router.push(`/workspace/${workspaceId}/w/${result.id}`)
if (result.id) {
router.push(`/workspace/${workspaceId}/w/${result.id}`)
}
} catch (error) {
// Error already handled by mutation's onError callback
logger.error('Failed to create workflow in folder:', error)
}
}, [createWorkflowMutation, workspaceId, folder.id, router])

Expand Down Expand Up @@ -278,6 +283,7 @@ export function FolderItem({ folder, level, hoverHandlers }: FolderItemProps) {
onDelete={() => setIsDeleteModalOpen(true)}
showCreate={true}
disableRename={!userPermissions.canEdit}
disableCreate={!userPermissions.canEdit || createWorkflowMutation.isPending}
disableDuplicate={!userPermissions.canEdit}
disableDelete={!userPermissions.canEdit}
/>
Expand Down