chore: enabling toast for some machine state
This commit is contained in:
@ -48,7 +48,7 @@ const createRouter = isDesktop() ? createHashRouter : createBrowserRouter
|
||||
const router = createRouter([
|
||||
{
|
||||
id: PATHS.INDEX,
|
||||
element: <RootLayout/>,
|
||||
element: <RootLayout />,
|
||||
children: [
|
||||
{
|
||||
path: PATHS.INDEX,
|
||||
|
@ -9,8 +9,6 @@ import {
|
||||
import { SystemIOMachineEvents } from '@src/machines/systemIO/utils'
|
||||
import { useEffect } from 'react'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import { projectsCommandBarConfig } from '@src/lib/commandBarConfigs/projectsCommandConfig'
|
||||
import useStateMachineCommands from '@src/hooks/useStateMachineCommands'
|
||||
|
||||
export function SystemIOMachineLogicListener() {
|
||||
const requestedProjectName = useRequestedProjectName()
|
||||
|
@ -8,6 +8,7 @@ import {
|
||||
SystemIOMachineEvents,
|
||||
SystemIOMachineStates,
|
||||
} from '@src/machines/systemIO/utils'
|
||||
import toast from 'react-hot-toast'
|
||||
import { assertEvent, assign, fromPromise, setup } from 'xstate'
|
||||
|
||||
/**
|
||||
@ -101,6 +102,28 @@ export const systemIOMachine = setup({
|
||||
return event.data.requestedDefaultProjectFolderName
|
||||
},
|
||||
}),
|
||||
[SystemIOMachineActions.toastSuccess]: ({ event }) => {
|
||||
toast.success(
|
||||
('data' in event && typeof event.data === 'string' && event.data) ||
|
||||
('output' in event &&
|
||||
'message' in event.output &&
|
||||
typeof event.output.message === 'string' &&
|
||||
event.output.message) ||
|
||||
''
|
||||
)
|
||||
},
|
||||
[SystemIOMachineActions.toastError]: ({ event }) => {
|
||||
toast.error(
|
||||
('data' in event && typeof event.data === 'string' && event.data) ||
|
||||
('output' in event &&
|
||||
typeof event.output === 'string' &&
|
||||
event.output) ||
|
||||
('error' in event &&
|
||||
event.error instanceof Error &&
|
||||
event.error.message) ||
|
||||
''
|
||||
)
|
||||
},
|
||||
},
|
||||
actors: {
|
||||
[SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise(
|
||||
@ -143,8 +166,7 @@ export const systemIOMachine = setup({
|
||||
requestedProjectName: string
|
||||
requestedFileName: string
|
||||
requestedCode: string
|
||||
|
||||
}
|
||||
}
|
||||
}) => {}
|
||||
),
|
||||
},
|
||||
@ -227,9 +249,11 @@ export const systemIOMachine = setup({
|
||||
},
|
||||
onDone: {
|
||||
target: SystemIOMachineStates.readingFolders,
|
||||
actions: [SystemIOMachineActions.toastSuccess],
|
||||
},
|
||||
onError: {
|
||||
target: SystemIOMachineStates.idle,
|
||||
actions: [SystemIOMachineActions.toastError],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -76,6 +76,10 @@ export const systemIOMachineDesktop = systemIOMachine.provide({
|
||||
const requestedProjectName = input.requestedProjectName
|
||||
const uniqueName = getUniqueProjectName(requestedProjectName, folders)
|
||||
await createNewProjectDirectory(uniqueName)
|
||||
return {
|
||||
message: `Successfully created "${uniqueName}"`,
|
||||
name: uniqueName,
|
||||
}
|
||||
}
|
||||
),
|
||||
[SystemIOMachineActors.renameProject]: fromPromise(
|
||||
|
@ -41,6 +41,8 @@ export enum SystemIOMachineActions {
|
||||
setRequestedProjectName = 'set requested project name',
|
||||
setRequestedFileName = 'set requested file name',
|
||||
setDefaultProjectFolderName = 'set default project folder name',
|
||||
toastSuccess = 'toastSuccess',
|
||||
toastError = 'toastError',
|
||||
}
|
||||
|
||||
export const NO_PROJECT_DIRECTORY = ''
|
||||
|
Reference in New Issue
Block a user