fix: skeleton logic for react? going to move it from a string to obj.string

This commit is contained in:
Kevin Nadro
2025-04-09 14:47:54 -06:00
parent 8490b3815d
commit 562f8337bd
4 changed files with 33 additions and 9 deletions

View File

@ -63,6 +63,7 @@ const router = createRouter([
<KclContextProvider> <KclContextProvider>
<AppStateProvider> <AppStateProvider>
<MachineManagerProvider> <MachineManagerProvider>
<SystemIOMachineLogicListener />
<Outlet /> <Outlet />
</MachineManagerProvider> </MachineManagerProvider>
</AppStateProvider> </AppStateProvider>
@ -144,7 +145,6 @@ const router = createRouter([
path: PATHS.HOME, path: PATHS.HOME,
element: ( element: (
<Auth> <Auth>
<SystemIOMachineLogicListener />
<Outlet /> <Outlet />
<Home /> <Home />
<CommandBar /> <CommandBar />

View File

@ -5,18 +5,26 @@ import { useEffect } from 'react'
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
import { import {
NO_PROJECT_DIRECTORY, NO_PROJECT_DIRECTORY,
SystemIOMachineEvents
} from '@src/machines/systemIO/utils' } from '@src/machines/systemIO/utils'
export const useAuthState = () => useSelector(systemIOActor, (state) => state) export const useRequestedProjectName = () => useSelector(systemIOActor, (state) => state.context.requestedProjectName)
export const useProjectDirectoryPath = () => useSelector(systemIOActor, (state) => state.context.projectDirectoryPath)
export function SystemIOMachineLogicListener() { export function SystemIOMachineLogicListener() {
const state = useAuthState() const requestedProjectName = useRequestedProjectName()
const projectDirectoryPath = useProjectDirectoryPath()
const navigate = useNavigate()
useEffect(() => { useEffect(() => {
/* const requestedPath = `${PATHS.FILE}/${encodeURIComponent( // TODO: use a {requestedProjectName: string} to by pass this clear logic...
* requestedProjectName if (!requestedProjectName) {return}
let projectPathWithoutSpecificKCLFile =
projectDirectoryPath + window.electron.path.sep + requestedProjectName
const requestedPath = `${PATHS.FILE}/${encodeURIComponent(
projectPathWithoutSpecificKCLFile
)}` )}`
* navigate(requestedPath) */ navigate(requestedPath)
console.log(state) systemIOActor.send({type:SystemIOMachineEvents.clearRequestedProjectName})
}, [state]) }, [requestedProjectName])
return null return null
} }

View File

@ -37,6 +37,9 @@ export const systemIOMachine = setup({
| { | {
type: SystemIOMachineEvents.openProject type: SystemIOMachineEvents.openProject
data: { requestedProjectName: string } data: { requestedProjectName: string }
}
| {
type: SystemIOMachineEvents.clearRequestedProjectName
}, },
}, },
actions: { actions: {
@ -58,10 +61,15 @@ export const systemIOMachine = setup({
[SystemIOMachineActions.setRequestedProjectName]: assign({ [SystemIOMachineActions.setRequestedProjectName]: assign({
requestedProjectName: ({ event }) => { requestedProjectName: ({ event }) => {
assertEvent(event, SystemIOMachineEvents.openProject) assertEvent(event, SystemIOMachineEvents.openProject)
console.log('event', event.data.requestedProjectName)
return event.data.requestedProjectName return event.data.requestedProjectName
}, },
}), }),
[SystemIOMachineActions.clearRequestedProjectName]: assign({
requestedProjectName: ({ event }) => {
assertEvent(event, SystemIOMachineEvents.clearRequestedProjectName)
return NO_PROJECT_DIRECTORY
},
}),
}, },
actors: { actors: {
[SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise( [SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise(
@ -115,6 +123,12 @@ export const systemIOMachine = setup({
}, },
}, },
[SystemIOMachineStates.openingProject] : { [SystemIOMachineStates.openingProject] : {
on: {
[SystemIOMachineEvents.clearRequestedProjectName]: {
target: SystemIOMachineStates.idle,
actions: [SystemIOMachineActions.clearRequestedProjectName],
},
}
} }
}, },
}) })

View File

@ -20,12 +20,14 @@ export enum SystemIOMachineEvents {
'read folders from project directory', 'read folders from project directory',
setProjectDirectoryPath = 'set project directory path', setProjectDirectoryPath = 'set project directory path',
openProject = 'open project', openProject = 'open project',
clearRequestedProjectName = 'clear requested project name',
} }
export enum SystemIOMachineActions { export enum SystemIOMachineActions {
setFolders = 'set folders', setFolders = 'set folders',
setProjectDirectoryPath = 'set project directory path', setProjectDirectoryPath = 'set project directory path',
setRequestedProjectName = 'set requested project name', setRequestedProjectName = 'set requested project name',
clearRequestedProjectName = 'clear requested project name'
} }
export const NO_PROJECT_DIRECTORY = '' export const NO_PROJECT_DIRECTORY = ''