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