chore: deleting project

This commit is contained in:
Kevin Nadro
2025-04-14 15:32:43 -06:00
parent b5ff97c99b
commit 15d676a2c3
3 changed files with 53 additions and 3 deletions

View File

@ -48,6 +48,10 @@ export const systemIOMachine = setup({
| {
type: SystemIOMachineEvents.renameProject
data: { requestedProjectName: string, projectName: string }
}
| {
type: SystemIOMachineEvents.deleteProject
data: { requestedProjectName: string}
}
},
actions: {
@ -95,6 +99,13 @@ export const systemIOMachine = setup({
input: { context: SystemIOContext; requestProjectName: string }
}) => {}
),
[SystemIOMachineActors.deleteProject]: fromPromise(
async ({
input: context,
}: {
input: { context: SystemIOContext; requestProjectName: string }
}) => {}
),
},
}).createMachine({
initial: SystemIOMachineStates.idle,
@ -134,6 +145,9 @@ export const systemIOMachine = setup({
[SystemIOMachineEvents.renameProject]: {
target: SystemIOMachineStates.renamingProject,
},
[SystemIOMachineEvents.deleteProject]: {
target: SystemIOMachineStates.deletingProject,
},
},
},
[SystemIOMachineStates.readingFolders]: {
@ -191,6 +205,25 @@ export const systemIOMachine = setup({
},
},
},
[SystemIOMachineStates.deletingProject]: {
invoke: {
id: SystemIOMachineActors.deleteProject,
src: SystemIOMachineActors.deleteProject,
input: ({ context, event }) => {
assertEvent(event, SystemIOMachineEvents.deleteProject)
return {
context,
requestedProjectName: event.data.requestedProjectName,
}
},
onDone: {
target: SystemIOMachineStates.readingFolders,
},
onError: {
target: SystemIOMachineStates.idle,
},
},
},
},
})

View File

@ -100,5 +100,19 @@ export const systemIOMachineDesktop = systemIOMachine.provide({
// DONE
}
),
[SystemIOMachineActors.deleteProject]: fromPromise(
async ({
input,
}: {
input: { context: SystemIOContext; requestedProjectName: string}
}) => {
await window.electron.rm(
window.electron.path.join(input.context.projectDirectoryPath, input.requestedProjectName),
{
recursive: true,
}
)
}
),
},
})

View File

@ -4,7 +4,8 @@ export enum SystemIOMachineActors {
readFoldersFromProjectDirectory = 'read folders from project directory',
setProjectDirectoryPath = 'set project directory path',
createProject = 'create project',
renameProject = 'rename project'
renameProject = 'rename project',
deleteProject = 'delete project'
}
export enum SystemIOMachineStates {
@ -12,7 +13,8 @@ export enum SystemIOMachineStates {
readingFolders = 'readingFolders',
settingProjectDirectoryPath = 'settingProjectDirectoryPath',
creatingProject = 'creatingProject',
renamingProject = 'renamingProject'
renamingProject = 'renamingProject',
deletingProject = 'deletingProject'
}
const donePrefix = 'xstate.done.actor.'
@ -25,7 +27,8 @@ export enum SystemIOMachineEvents {
navigateToProject = 'navigate to project',
navigateToFile = 'navigate to file',
createProject = 'create project',
renameProject = 'rename project'
renameProject = 'rename project',
deleteProject = 'delete project'
}
export enum SystemIOMachineActions {