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 type: SystemIOMachineEvents.renameProject
data: { requestedProjectName: string, projectName: string } data: { requestedProjectName: string, projectName: string }
}
| {
type: SystemIOMachineEvents.deleteProject
data: { requestedProjectName: string}
} }
}, },
actions: { actions: {
@ -95,6 +99,13 @@ export const systemIOMachine = setup({
input: { context: SystemIOContext; requestProjectName: string } input: { context: SystemIOContext; requestProjectName: string }
}) => {} }) => {}
), ),
[SystemIOMachineActors.deleteProject]: fromPromise(
async ({
input: context,
}: {
input: { context: SystemIOContext; requestProjectName: string }
}) => {}
),
}, },
}).createMachine({ }).createMachine({
initial: SystemIOMachineStates.idle, initial: SystemIOMachineStates.idle,
@ -134,6 +145,9 @@ export const systemIOMachine = setup({
[SystemIOMachineEvents.renameProject]: { [SystemIOMachineEvents.renameProject]: {
target: SystemIOMachineStates.renamingProject, target: SystemIOMachineStates.renamingProject,
}, },
[SystemIOMachineEvents.deleteProject]: {
target: SystemIOMachineStates.deletingProject,
},
}, },
}, },
[SystemIOMachineStates.readingFolders]: { [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 // 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', readFoldersFromProjectDirectory = 'read folders from project directory',
setProjectDirectoryPath = 'set project directory path', setProjectDirectoryPath = 'set project directory path',
createProject = 'create project', createProject = 'create project',
renameProject = 'rename project' renameProject = 'rename project',
deleteProject = 'delete project'
} }
export enum SystemIOMachineStates { export enum SystemIOMachineStates {
@ -12,7 +13,8 @@ export enum SystemIOMachineStates {
readingFolders = 'readingFolders', readingFolders = 'readingFolders',
settingProjectDirectoryPath = 'settingProjectDirectoryPath', settingProjectDirectoryPath = 'settingProjectDirectoryPath',
creatingProject = 'creatingProject', creatingProject = 'creatingProject',
renamingProject = 'renamingProject' renamingProject = 'renamingProject',
deletingProject = 'deletingProject'
} }
const donePrefix = 'xstate.done.actor.' const donePrefix = 'xstate.done.actor.'
@ -25,7 +27,8 @@ export enum SystemIOMachineEvents {
navigateToProject = 'navigate to project', navigateToProject = 'navigate to project',
navigateToFile = 'navigate to file', navigateToFile = 'navigate to file',
createProject = 'create project', createProject = 'create project',
renameProject = 'rename project' renameProject = 'rename project',
deleteProject = 'delete project'
} }
export enum SystemIOMachineActions { export enum SystemIOMachineActions {