mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-23 17:28:29 +02:00
Prompt folder name on create
This commit is contained in:
@@ -148,18 +148,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
|||||||
key: 'create-workspace',
|
key: 'create-workspace',
|
||||||
label: 'New Workspace',
|
label: 'New Workspace',
|
||||||
leftSlot: <Icon icon="plus" />,
|
leftSlot: <Icon icon="plus" />,
|
||||||
onSelect: async () => {
|
onSelect: () => createWorkspace.mutate({}),
|
||||||
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 });
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}, [
|
}, [
|
||||||
|
|||||||
@@ -4,17 +4,29 @@ import { trackEvent } from '../lib/analytics';
|
|||||||
import type { Folder } from '../lib/models';
|
import type { Folder } from '../lib/models';
|
||||||
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
|
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
|
||||||
import { foldersQueryKey } from './useFolders';
|
import { foldersQueryKey } from './useFolders';
|
||||||
|
import { usePrompt } from './usePrompt';
|
||||||
|
|
||||||
export function useCreateFolder() {
|
export function useCreateFolder() {
|
||||||
const workspaceId = useActiveWorkspaceId();
|
const workspaceId = useActiveWorkspaceId();
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
|
const prompt = usePrompt();
|
||||||
|
|
||||||
return useMutation<Folder, unknown, Partial<Pick<Folder, 'name' | 'sortPriority' | 'folderId'>>>({
|
return useMutation<Folder, unknown, Partial<Pick<Folder, 'name' | 'sortPriority' | 'folderId'>>>({
|
||||||
mutationFn: (patch) => {
|
mutationFn: async (patch) => {
|
||||||
if (workspaceId === null) {
|
if (workspaceId === null) {
|
||||||
throw new Error("Cannot create folder when there's no active workspace");
|
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();
|
patch.sortPriority = patch.sortPriority || -Date.now();
|
||||||
return invoke('cmd_create_folder', { workspaceId, ...patch });
|
return invoke('cmd_create_folder', { workspaceId, ...patch });
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,12 +3,25 @@ import { invoke } from '@tauri-apps/api';
|
|||||||
import { trackEvent } from '../lib/analytics';
|
import { trackEvent } from '../lib/analytics';
|
||||||
import type { Workspace } from '../lib/models';
|
import type { Workspace } from '../lib/models';
|
||||||
import { useAppRoutes } from './useAppRoutes';
|
import { useAppRoutes } from './useAppRoutes';
|
||||||
|
import { usePrompt } from './usePrompt';
|
||||||
|
|
||||||
export function useCreateWorkspace({ navigateAfter }: { navigateAfter: boolean }) {
|
export function useCreateWorkspace({ navigateAfter }: { navigateAfter: boolean }) {
|
||||||
const routes = useAppRoutes();
|
const routes = useAppRoutes();
|
||||||
return useMutation<Workspace, unknown, Pick<Workspace, 'name'>>({
|
const prompt = usePrompt();
|
||||||
mutationFn: (patch) => {
|
return useMutation<Workspace, unknown, Partial<Pick<Workspace, 'name'>>>({
|
||||||
return invoke('cmd_create_workspace', patch);
|
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'),
|
onSettled: () => trackEvent('workspace', 'create'),
|
||||||
onSuccess: async (workspace) => {
|
onSuccess: async (workspace) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user