[bug]: Chokidar + reading projects spams multiple times (#6558)

fix: do not double or triple load reading folders from disk due to file system watcher when deleting
This commit is contained in:
Kevin Nadro
2025-04-28 18:15:20 -05:00
committed by GitHub
parent 1bd570ceb9
commit f6cb725268
3 changed files with 51 additions and 24 deletions

View File

@ -32,30 +32,34 @@ export const systemIOMachine = setup({
| {
type: SystemIOMachineEvents.done_checkReadWrite
output: { value: boolean; error: unknown }
}
}
| {
type: SystemIOMachineEvents.setProjectDirectoryPath
data: { requestedProjectDirectoryPath: string }
}
type: SystemIOMachineEvents.setProjectDirectoryPath
data: { requestedProjectDirectoryPath: string }
}
| {
type: SystemIOMachineEvents.navigateToProject
data: { requestedProjectName: string }
}
type: SystemIOMachineEvents.navigateToProject
data: { requestedProjectName: string }
}
| {
type: SystemIOMachineEvents.navigateToFile
data: { requestedProjectName: string; requestedFileName: string }
}
type: SystemIOMachineEvents.navigateToFile
data: { requestedProjectName: string; requestedFileName: string }
}
| {
type: SystemIOMachineEvents.createProject
data: { requestedProjectName: string }
}
type: SystemIOMachineEvents.createProject
data: { requestedProjectName: string }
}
| {
type: SystemIOMachineEvents.renameProject
data: { requestedProjectName: string; projectName: string }
}
type: SystemIOMachineEvents.renameProject
data: { requestedProjectName: string; projectName: string }
}
| {
type: SystemIOMachineEvents.deleteProject
data: { requestedProjectName: string }
type: SystemIOMachineEvents.deleteProject
data: { requestedProjectName: string }
}
| {
type: SystemIOMachineEvents.done_deleteProject
output: { message: string; name: string }
}
| {
type: SystemIOMachineEvents.createKCLFile
@ -165,6 +169,12 @@ export const systemIOMachine = setup({
return event.data
},
}),
[SystemIOMachineActions.setLastProjectDeleteRequest]: assign({
lastProjectDeleteRequest: ({ event }) => {
assertEvent(event, SystemIOMachineEvents.done_deleteProject)
return {project: event.output.name}
},
}),
},
actors: {
[SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise(
@ -275,6 +285,9 @@ export const systemIOMachine = setup({
requestedProjectName: NO_PROJECT_DIRECTORY,
isProjectNew: true,
},
lastProjectDeleteRequest: {
project: NO_PROJECT_DIRECTORY
}
}),
states: {
[SystemIOMachineStates.idle]: {
@ -401,7 +414,7 @@ export const systemIOMachine = setup({
},
onDone: {
target: SystemIOMachineStates.readingFolders,
actions: [SystemIOMachineActions.toastSuccess],
actions: [SystemIOMachineActions.toastSuccess, SystemIOMachineActions.setLastProjectDeleteRequest]
},
onError: {
target: SystemIOMachineStates.idle,