mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-06-04 20:05:38 +08:00
refactor: move project deletion to module
This commit is contained in:
@@ -448,8 +448,7 @@ export function useSidebarController({
|
||||
return;
|
||||
}
|
||||
|
||||
const { project, sessionCount } = deleteConfirmation;
|
||||
const isEmpty = sessionCount === 0;
|
||||
const { project } = deleteConfirmation;
|
||||
|
||||
setDeleteConfirmation(null);
|
||||
// Track in-flight deletes by projectId so the UI can disable actions
|
||||
@@ -457,13 +456,16 @@ export function useSidebarController({
|
||||
setDeletingProjects((prev) => new Set([...prev, project.projectId]));
|
||||
|
||||
try {
|
||||
const response = await api.deleteProject(project.projectId, !isEmpty, deleteData);
|
||||
const response = await api.deleteProject(project.projectId, deleteData);
|
||||
|
||||
if (response.ok) {
|
||||
onProjectDelete?.(project.projectId);
|
||||
} else {
|
||||
const error = (await response.json()) as { error?: string };
|
||||
alert(error.error || t('messages.deleteProjectFailed'));
|
||||
const data = (await response.json()) as { error?: string | { message?: string } };
|
||||
const err = data.error;
|
||||
const message =
|
||||
typeof err === 'string' ? err : err && typeof err === 'object' && err.message ? err.message : t('messages.deleteProjectFailed');
|
||||
alert(message);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error deleting project:', error);
|
||||
|
||||
@@ -93,10 +93,10 @@ export const api = {
|
||||
authenticatedFetch(`/api/gemini/sessions/${sessionId}`, {
|
||||
method: 'DELETE',
|
||||
}),
|
||||
deleteProject: (projectId, force = false, deleteData = false) => {
|
||||
// `hardDelete` => server `?force=true` (remove DB row + Claude *.jsonl + sessions rows for path).
|
||||
deleteProject: (projectId, hardDelete = false) => {
|
||||
const params = new URLSearchParams();
|
||||
if (force) params.set('force', 'true');
|
||||
if (deleteData) params.set('deleteData', 'true');
|
||||
if (hardDelete) params.set('force', 'true');
|
||||
const qs = params.toString();
|
||||
return authenticatedFetch(`/api/projects/${projectId}${qs ? `?${qs}` : ''}`, {
|
||||
method: 'DELETE',
|
||||
|
||||
Reference in New Issue
Block a user