import type { CookieJar } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; import { getActiveWorkspaceId } from './useActiveWorkspace'; import { cookieJarsAtom } from './useCookieJars'; import { useFastMutation } from './useFastMutation'; import { usePrompt } from './usePrompt'; import { updateModelList } from './useSyncModelStores'; export function useCreateCookieJar() { const prompt = usePrompt(); const setCookieJars = useSetAtom(cookieJarsAtom); return useFastMutation({ mutationKey: ['create_cookie_jar'], mutationFn: async () => { const workspaceId = getActiveWorkspaceId(); if (workspaceId == null) { throw new Error("Cannot create cookie jar when there's no active workspace"); } const name = await prompt({ id: 'new-cookie-jar', title: 'New CookieJar', placeholder: 'My Jar', confirmText: 'Create', label: 'Name', defaultValue: 'My Jar', }); if (name == null) return null; return invokeCmd('cmd_create_cookie_jar', { workspaceId, name }); }, onSuccess: (cookieJar) => { if (cookieJar == null) return; // Optimistic update setCookieJars(updateModelList(cookieJar)); }, onSettled: () => trackEvent('cookie_jar', 'create'), }); }