chore: implementing renaming project

This commit is contained in:
Kevin Nadro
2025-04-14 15:04:07 -06:00
parent a3b8b1c859
commit b5ff97c99b
4 changed files with 129 additions and 13 deletions

View File

@ -36,10 +36,18 @@ export const systemIOMachine = setup({
| {
type: SystemIOMachineEvents.navigateToProject
data: { requestedProjectName: string }
}
}
| {
type: SystemIOMachineEvents.navigateToFile
data: { requestedProjectName: string, requestedFileName: string }
data: { requestedProjectName: string; requestedFileName: string }
}
| {
type: SystemIOMachineEvents.createProject
data: { requestedProjectName: string }
}
| {
type: SystemIOMachineEvents.renameProject
data: { requestedProjectName: string, projectName: string }
}
},
actions: {
@ -67,7 +75,10 @@ export const systemIOMachine = setup({
[SystemIOMachineActions.setRequestedFileName]: assign({
requestedFileName: ({ event }) => {
assertEvent(event, SystemIOMachineEvents.navigateToFile)
return { project: event.data.requestedProjectName, file: event.data.requestedFileName }
return {
project: event.data.requestedProjectName,
file: event.data.requestedFileName,
}
},
}),
},
@ -77,6 +88,13 @@ export const systemIOMachine = setup({
return []
}
),
[SystemIOMachineActors.createProject]: fromPromise(
async ({
input: context,
}: {
input: { context: SystemIOContext; requestProjectName: string }
}) => {}
),
},
}).createMachine({
initial: SystemIOMachineStates.idle,
@ -89,14 +107,17 @@ export const systemIOMachine = setup({
projectDirectoryPath: NO_PROJECT_DIRECTORY,
hasListedProjects: false,
requestedProjectName: { name: NO_PROJECT_DIRECTORY },
requestedFileName: { name: NO_PROJECT_DIRECTORY },
requestedFileName: {
project: NO_PROJECT_DIRECTORY,
file: NO_PROJECT_DIRECTORY,
},
}),
states: {
[SystemIOMachineStates.idle]: {
on: {
// on can be an action
[SystemIOMachineEvents.readFoldersFromProjectDirectory]:
SystemIOMachineStates.readingFolders,
SystemIOMachineStates.readingFolders,
[SystemIOMachineEvents.setProjectDirectoryPath]: {
target: SystemIOMachineStates.readingFolders,
actions: [SystemIOMachineActions.setProjectDirectoryPath],
@ -107,6 +128,12 @@ export const systemIOMachine = setup({
[SystemIOMachineEvents.navigateToFile]: {
actions: [SystemIOMachineActions.setRequestedFileName],
},
[SystemIOMachineEvents.createProject]: {
target: SystemIOMachineStates.creatingProject,
},
[SystemIOMachineEvents.renameProject]: {
target: SystemIOMachineStates.renamingProject,
},
},
},
[SystemIOMachineStates.readingFolders]: {
@ -125,6 +152,45 @@ export const systemIOMachine = setup({
},
},
},
[SystemIOMachineStates.creatingProject]: {
invoke: {
id: SystemIOMachineActors.createProject,
src: SystemIOMachineActors.createProject,
input: ({ context, event }) => {
assertEvent(event, SystemIOMachineEvents.createProject)
return {
context,
requestedProjectName: event.data.requestedProjectName,
}
},
onDone: {
target: SystemIOMachineStates.readingFolders,
},
onError: {
target: SystemIOMachineStates.idle,
},
},
},
[SystemIOMachineStates.renamingProject]: {
invoke: {
id: SystemIOMachineActors.renameProject,
src: SystemIOMachineActors.renameProject,
input: ({ context, event }) => {
assertEvent(event, SystemIOMachineEvents.renameProject)
return {
context,
requestedProjectName: event.data.requestedProjectName,
projectName: event.data.projectName
}
},
onDone: {
target: SystemIOMachineStates.readingFolders,
},
onError: {
target: SystemIOMachineStates.idle,
},
},
},
},
})