fix: skeleton logic for react? going to move it from a string to obj.string
This commit is contained in:
		@ -63,6 +63,7 @@ const router = createRouter([
 | 
			
		||||
              <KclContextProvider>
 | 
			
		||||
                <AppStateProvider>
 | 
			
		||||
                  <MachineManagerProvider>
 | 
			
		||||
                    <SystemIOMachineLogicListener />
 | 
			
		||||
                    <Outlet />
 | 
			
		||||
                  </MachineManagerProvider>
 | 
			
		||||
                </AppStateProvider>
 | 
			
		||||
@ -144,7 +145,6 @@ const router = createRouter([
 | 
			
		||||
        path: PATHS.HOME,
 | 
			
		||||
        element: (
 | 
			
		||||
          <Auth>
 | 
			
		||||
            <SystemIOMachineLogicListener />
 | 
			
		||||
            <Outlet />
 | 
			
		||||
            <Home />
 | 
			
		||||
            <CommandBar />
 | 
			
		||||
 | 
			
		||||
@ -5,18 +5,26 @@ import { useEffect } from 'react'
 | 
			
		||||
import { useNavigate } from 'react-router-dom'
 | 
			
		||||
import {
 | 
			
		||||
  NO_PROJECT_DIRECTORY,
 | 
			
		||||
  SystemIOMachineEvents
 | 
			
		||||
} 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() {
 | 
			
		||||
  const state = useAuthState()
 | 
			
		||||
  const requestedProjectName = useRequestedProjectName()
 | 
			
		||||
  const projectDirectoryPath = useProjectDirectoryPath()
 | 
			
		||||
  const navigate = useNavigate()
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    /* const requestedPath = `${PATHS.FILE}/${encodeURIComponent(
 | 
			
		||||
     *  requestedProjectName
 | 
			
		||||
    // TODO: use a {requestedProjectName: string} to by pass this clear logic...
 | 
			
		||||
    if (!requestedProjectName) {return}
 | 
			
		||||
    let projectPathWithoutSpecificKCLFile =
 | 
			
		||||
      projectDirectoryPath + window.electron.path.sep + requestedProjectName
 | 
			
		||||
    const requestedPath = `${PATHS.FILE}/${encodeURIComponent(
 | 
			
		||||
projectPathWithoutSpecificKCLFile
 | 
			
		||||
       )}`
 | 
			
		||||
     *       navigate(requestedPath) */
 | 
			
		||||
    console.log(state)
 | 
			
		||||
  }, [state])
 | 
			
		||||
    navigate(requestedPath)
 | 
			
		||||
    systemIOActor.send({type:SystemIOMachineEvents.clearRequestedProjectName})
 | 
			
		||||
  }, [requestedProjectName])
 | 
			
		||||
  return null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -37,6 +37,9 @@ export const systemIOMachine = setup({
 | 
			
		||||
      | {
 | 
			
		||||
          type: SystemIOMachineEvents.openProject
 | 
			
		||||
          data: { requestedProjectName: string }
 | 
			
		||||
      }
 | 
			
		||||
      | {
 | 
			
		||||
          type: SystemIOMachineEvents.clearRequestedProjectName
 | 
			
		||||
        },
 | 
			
		||||
  },
 | 
			
		||||
  actions: {
 | 
			
		||||
@ -58,10 +61,15 @@ export const systemIOMachine = setup({
 | 
			
		||||
    [SystemIOMachineActions.setRequestedProjectName]: assign({
 | 
			
		||||
      requestedProjectName: ({ event }) => {
 | 
			
		||||
        assertEvent(event, SystemIOMachineEvents.openProject)
 | 
			
		||||
        console.log('event', event.data.requestedProjectName)
 | 
			
		||||
        return event.data.requestedProjectName
 | 
			
		||||
      },
 | 
			
		||||
    }),
 | 
			
		||||
    [SystemIOMachineActions.clearRequestedProjectName]: assign({
 | 
			
		||||
      requestedProjectName: ({ event }) => {
 | 
			
		||||
        assertEvent(event, SystemIOMachineEvents.clearRequestedProjectName)
 | 
			
		||||
        return NO_PROJECT_DIRECTORY
 | 
			
		||||
      },
 | 
			
		||||
    }),
 | 
			
		||||
  },
 | 
			
		||||
  actors: {
 | 
			
		||||
    [SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise(
 | 
			
		||||
@ -115,6 +123,12 @@ export const systemIOMachine = setup({
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    [SystemIOMachineStates.openingProject] : {
 | 
			
		||||
      on: {
 | 
			
		||||
        [SystemIOMachineEvents.clearRequestedProjectName]: {
 | 
			
		||||
          target: SystemIOMachineStates.idle,
 | 
			
		||||
          actions: [SystemIOMachineActions.clearRequestedProjectName],
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -20,12 +20,14 @@ export enum SystemIOMachineEvents {
 | 
			
		||||
    'read folders from project directory',
 | 
			
		||||
  setProjectDirectoryPath = 'set project directory path',
 | 
			
		||||
  openProject = 'open project',
 | 
			
		||||
  clearRequestedProjectName = 'clear requested project name',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export enum SystemIOMachineActions {
 | 
			
		||||
  setFolders = 'set folders',
 | 
			
		||||
  setProjectDirectoryPath = 'set project directory path',
 | 
			
		||||
  setRequestedProjectName = 'set requested project name',
 | 
			
		||||
  clearRequestedProjectName = 'clear requested project name'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const NO_PROJECT_DIRECTORY = ''
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user