mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-23 17:18:32 +02:00
Put delete workspace in settings
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
|
import { useDeleteWorkspace } from '../hooks/useDeleteWorkspace';
|
||||||
import { useUpdateWorkspace } from '../hooks/useUpdateWorkspace';
|
import { useUpdateWorkspace } from '../hooks/useUpdateWorkspace';
|
||||||
import { useWorkspaces } from '../hooks/useWorkspaces';
|
import { useWorkspaces } from '../hooks/useWorkspaces';
|
||||||
|
import { Button } from './core/Button';
|
||||||
import { PlainInput } from './core/PlainInput';
|
import { PlainInput } from './core/PlainInput';
|
||||||
import { VStack } from './core/Stacks';
|
import { VStack } from './core/Stacks';
|
||||||
import { MarkdownEditor } from './MarkdownEditor';
|
import { MarkdownEditor } from './MarkdownEditor';
|
||||||
@@ -12,12 +14,12 @@ export function WorkspaceSettingsDialog({ workspaceId }: Props) {
|
|||||||
const updateWorkspace = useUpdateWorkspace(workspaceId ?? null);
|
const updateWorkspace = useUpdateWorkspace(workspaceId ?? null);
|
||||||
const workspaces = useWorkspaces();
|
const workspaces = useWorkspaces();
|
||||||
const workspace = workspaces.find((w) => w.id === workspaceId);
|
const workspace = workspaces.find((w) => w.id === workspaceId);
|
||||||
|
const { mutate: deleteWorkspace } = useDeleteWorkspace();
|
||||||
|
|
||||||
if (workspace == null) return null;
|
if (workspace == null) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<VStack space={3} className="pb-3 max-h-[50vh]">
|
<VStack space={3} alignItems="start" className="pb-3 max-h-[50vh]">
|
||||||
{workspace.id}
|
|
||||||
<PlainInput
|
<PlainInput
|
||||||
label="Workspace Name"
|
label="Workspace Name"
|
||||||
defaultValue={workspace.name}
|
defaultValue={workspace.name}
|
||||||
@@ -31,8 +33,14 @@ export function WorkspaceSettingsDialog({ workspaceId }: Props) {
|
|||||||
defaultValue={workspace.description}
|
defaultValue={workspace.description}
|
||||||
stateKey={`description.${workspace.id}`}
|
stateKey={`description.${workspace.id}`}
|
||||||
onChange={(description) => updateWorkspace.mutate({ description })}
|
onChange={(description) => updateWorkspace.mutate({ description })}
|
||||||
heightMode='auto'
|
heightMode="auto"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<VStack space={3} className="mt-3" alignItems="start">
|
||||||
|
<Button onClick={() => deleteWorkspace()} color="danger" variant="border">
|
||||||
|
Delete Workspace
|
||||||
|
</Button>
|
||||||
|
</VStack>
|
||||||
</VStack>
|
</VStack>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { memo, useCallback, useMemo } from 'react';
|
|||||||
import { useActiveWorkspace } from '../hooks/useActiveWorkspace';
|
import { useActiveWorkspace } from '../hooks/useActiveWorkspace';
|
||||||
import { useCreateWorkspace } from '../hooks/useCreateWorkspace';
|
import { useCreateWorkspace } from '../hooks/useCreateWorkspace';
|
||||||
import { useDeleteSendHistory } from '../hooks/useDeleteSendHistory';
|
import { useDeleteSendHistory } from '../hooks/useDeleteSendHistory';
|
||||||
import { useDeleteWorkspace } from '../hooks/useDeleteWorkspace';
|
import { useDialog } from '../hooks/useDialog';
|
||||||
import { useOpenWorkspace } from '../hooks/useOpenWorkspace';
|
import { useOpenWorkspace } from '../hooks/useOpenWorkspace';
|
||||||
import { useSettings } from '../hooks/useSettings';
|
import { useSettings } from '../hooks/useSettings';
|
||||||
import { useWorkspaces } from '../hooks/useWorkspaces';
|
import { useWorkspaces } from '../hooks/useWorkspaces';
|
||||||
@@ -14,7 +14,6 @@ import type { DropdownItem } from './core/Dropdown';
|
|||||||
import { Icon } from './core/Icon';
|
import { Icon } from './core/Icon';
|
||||||
import type { RadioDropdownItem } from './core/RadioDropdown';
|
import type { RadioDropdownItem } from './core/RadioDropdown';
|
||||||
import { RadioDropdown } from './core/RadioDropdown';
|
import { RadioDropdown } from './core/RadioDropdown';
|
||||||
import { useDialog } from '../hooks/useDialog';
|
|
||||||
import { OpenWorkspaceDialog } from './OpenWorkspaceDialog';
|
import { OpenWorkspaceDialog } from './OpenWorkspaceDialog';
|
||||||
import { WorkspaceSettingsDialog } from './WorkpaceSettingsDialog';
|
import { WorkspaceSettingsDialog } from './WorkpaceSettingsDialog';
|
||||||
|
|
||||||
@@ -27,13 +26,12 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
|||||||
const workspaces = useWorkspaces();
|
const workspaces = useWorkspaces();
|
||||||
const activeWorkspace = useActiveWorkspace();
|
const activeWorkspace = useActiveWorkspace();
|
||||||
const activeWorkspaceId = activeWorkspace?.id ?? null;
|
const activeWorkspaceId = activeWorkspace?.id ?? null;
|
||||||
const deleteWorkspace = useDeleteWorkspace(activeWorkspace);
|
const { mutate: createWorkspace } = useCreateWorkspace();
|
||||||
const createWorkspace = useCreateWorkspace();
|
const { mutate: deleteSendHistory } = useDeleteSendHistory();
|
||||||
const dialog = useDialog();
|
const dialog = useDialog();
|
||||||
const settings = useSettings();
|
const settings = useSettings();
|
||||||
const openWorkspace = useOpenWorkspace();
|
const openWorkspace = useOpenWorkspace();
|
||||||
const openWorkspaceNewWindow = settings?.openWorkspaceNewWindow ?? null;
|
const openWorkspaceNewWindow = settings?.openWorkspaceNewWindow ?? null;
|
||||||
const deleteSendHistory = useDeleteSendHistory();
|
|
||||||
|
|
||||||
const orderedWorkspaces = useMemo(
|
const orderedWorkspaces = useMemo(
|
||||||
() => [...workspaces].sort((a, b) => (a.name.localeCompare(b.name) > 0 ? 1 : -1)),
|
() => [...workspaces].sort((a, b) => (a.name.localeCompare(b.name) > 0 ? 1 : -1)),
|
||||||
@@ -69,21 +67,14 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
|||||||
key: 'delete-responses',
|
key: 'delete-responses',
|
||||||
label: 'Clear Send History',
|
label: 'Clear Send History',
|
||||||
leftSlot: <Icon icon="history" />,
|
leftSlot: <Icon icon="history" />,
|
||||||
onSelect: deleteSendHistory.mutate,
|
onSelect: deleteSendHistory,
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'delete',
|
|
||||||
label: 'Delete Workspace',
|
|
||||||
leftSlot: <Icon icon="trash" />,
|
|
||||||
onSelect: deleteWorkspace.mutate,
|
|
||||||
variant: 'danger',
|
|
||||||
},
|
},
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{
|
{
|
||||||
key: 'create-workspace',
|
key: 'create-workspace',
|
||||||
label: 'New Workspace',
|
label: 'New Workspace',
|
||||||
leftSlot: <Icon icon="plus" />,
|
leftSlot: <Icon icon="plus" />,
|
||||||
onSelect: createWorkspace.mutate,
|
onSelect: createWorkspace,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -91,9 +82,8 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
|||||||
}, [
|
}, [
|
||||||
activeWorkspace?.id,
|
activeWorkspace?.id,
|
||||||
activeWorkspaceId,
|
activeWorkspaceId,
|
||||||
createWorkspace.mutate,
|
createWorkspace,
|
||||||
deleteSendHistory.mutate,
|
deleteSendHistory,
|
||||||
deleteWorkspace.mutate,
|
|
||||||
dialog,
|
dialog,
|
||||||
orderedWorkspaces,
|
orderedWorkspaces,
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -10,13 +10,13 @@ import { useFastMutation } from './useFastMutation';
|
|||||||
import { removeModelById } from './useSyncModelStores';
|
import { removeModelById } from './useSyncModelStores';
|
||||||
import { workspacesAtom } from './useWorkspaces';
|
import { workspacesAtom } from './useWorkspaces';
|
||||||
|
|
||||||
export function useDeleteWorkspace(workspace: Workspace | null) {
|
export function useDeleteWorkspace() {
|
||||||
const confirm = useConfirm();
|
const confirm = useConfirm();
|
||||||
const setWorkspaces = useSetAtom(workspacesAtom);
|
const setWorkspaces = useSetAtom(workspacesAtom);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
return useFastMutation<Workspace | null, string>({
|
return useFastMutation<Workspace | null, string>({
|
||||||
mutationKey: ['delete_workspace', workspace?.id],
|
mutationKey: ['delete_workspace'],
|
||||||
mutationFn: async () => {
|
mutationFn: async () => {
|
||||||
const workspace = getActiveWorkspace();
|
const workspace = getActiveWorkspace();
|
||||||
const confirmed = await confirm({
|
const confirmed = await confirm({
|
||||||
|
|||||||
Reference in New Issue
Block a user