import type { Environment } from '@yaakapp-internal/models'; import { CreateEnvironmentDialog } from '../components/CreateEnvironmentDialog'; import { activeWorkspaceIdAtom } from '../hooks/useActiveWorkspace'; import { createFastMutation } from '../hooks/useFastMutation'; import { showDialog } from '../lib/dialog'; import { jotaiStore } from '../lib/jotai'; import { setWorkspaceSearchParams } from '../lib/setWorkspaceSearchParams'; export const createSubEnvironmentAndActivate = createFastMutation< string | null, unknown, Environment | null >({ mutationKey: ['create_environment'], mutationFn: async (baseEnvironment) => { if (baseEnvironment == null) { throw new Error('No base environment passed'); } const workspaceId = jotaiStore.get(activeWorkspaceIdAtom); if (workspaceId == null) { throw new Error('Cannot create environment when no active workspace'); } return new Promise((resolve) => { showDialog({ id: 'new-environment', title: 'New Environment', description: 'Create multiple environments with different sets of variables', size: 'sm', onClose: () => resolve(null), render: ({ hide }) => ( { resolve(id); }} /> ), }); }); }, onSuccess: async (environmentId) => { if (environmentId == null) { return; // Was not created } setWorkspaceSearchParams({ environment_id: environmentId }); }, });