diff --git a/src-web/components/WorkspaceActionsDropdown.tsx b/src-web/components/WorkspaceActionsDropdown.tsx index c6ac19ec..363ede33 100644 --- a/src-web/components/WorkspaceActionsDropdown.tsx +++ b/src-web/components/WorkspaceActionsDropdown.tsx @@ -148,18 +148,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({ key: 'create-workspace', label: 'New Workspace', leftSlot: , - onSelect: async () => { - const name = await prompt({ - id: 'new-workspace', - name: 'name', - label: 'Name', - defaultValue: 'My Workspace', - title: 'New Workspace', - confirmLabel: 'Create', - placeholder: 'My Workspace', - }); - createWorkspace.mutate({ name }); - }, + onSelect: () => createWorkspace.mutate({}), }, ]; }, [ diff --git a/src-web/hooks/useCreateFolder.ts b/src-web/hooks/useCreateFolder.ts index 041e226d..1e87b617 100644 --- a/src-web/hooks/useCreateFolder.ts +++ b/src-web/hooks/useCreateFolder.ts @@ -4,17 +4,29 @@ import { trackEvent } from '../lib/analytics'; import type { Folder } from '../lib/models'; import { useActiveWorkspaceId } from './useActiveWorkspaceId'; import { foldersQueryKey } from './useFolders'; +import { usePrompt } from './usePrompt'; export function useCreateFolder() { const workspaceId = useActiveWorkspaceId(); const queryClient = useQueryClient(); + const prompt = usePrompt(); return useMutation>>({ - mutationFn: (patch) => { + mutationFn: async (patch) => { if (workspaceId === null) { throw new Error("Cannot create folder when there's no active workspace"); } - patch.name = patch.name || 'New Folder'; + patch.name = + patch.name || + (await prompt({ + id: 'new-folder', + name: 'name', + label: 'Name', + defaultValue: 'Folder', + title: 'New Folder', + confirmLabel: 'Create', + placeholder: 'Name', + })); patch.sortPriority = patch.sortPriority || -Date.now(); return invoke('cmd_create_folder', { workspaceId, ...patch }); }, diff --git a/src-web/hooks/useCreateWorkspace.ts b/src-web/hooks/useCreateWorkspace.ts index ade45178..2c785341 100644 --- a/src-web/hooks/useCreateWorkspace.ts +++ b/src-web/hooks/useCreateWorkspace.ts @@ -3,12 +3,25 @@ import { invoke } from '@tauri-apps/api'; import { trackEvent } from '../lib/analytics'; import type { Workspace } from '../lib/models'; import { useAppRoutes } from './useAppRoutes'; +import { usePrompt } from './usePrompt'; export function useCreateWorkspace({ navigateAfter }: { navigateAfter: boolean }) { const routes = useAppRoutes(); - return useMutation>({ - mutationFn: (patch) => { - return invoke('cmd_create_workspace', patch); + const prompt = usePrompt(); + return useMutation>>({ + mutationFn: async ({ name: patchName }) => { + const name = + patchName ?? + (await prompt({ + id: 'new-workspace', + name: 'name', + label: 'Name', + defaultValue: 'My Workspace', + title: 'New Workspace', + confirmLabel: 'Create', + placeholder: 'My Workspace', + })); + return invoke('cmd_create_workspace', { name }); }, onSettled: () => trackEvent('workspace', 'create'), onSuccess: async (workspace) => {