Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Available variables:
- // - Machine
- // - interpret
- // - assign
- // - send
- // - sendParent
- // - spawn
- // - raise
- // - actions
- // - XState (all XState exports)
- const smartRecommendationsMachineConfig = Machine({
- id: 'recommendations',
- initial: 'loading',
- context: {
- highlighted: null,
- recommendations: [],
- },
- states: {
- loading: {
- invoke: {
- src: () => setTimeout(() => Promise.resolve(), 500),
- onDone: 'loaded',
- onError: 'hasError',
- },
- },
- loaded: {
- entry: ['saveRecommendations', 'setHighlighted'],
- initial: 'ready',
- states: {
- ready: {
- on: {
- OMIT_RECOMMENDATION: {
- target: 'omiting',
- actions: ['findNextHighlighted'],
- },
- },
- },
- omiting: {
- invoke: {
- src: setTimeout(() => Promise.resolve(), 500),
- onDone: '#recommendations.loading',
- onError: 'omitFailed',
- },
- },
- omitFailed: {
- on: {
- RETRY_OMIT: 'omiting',
- },
- },
- },
- },
- hasError: {
- RETRY_LOAD_RECOMMENDATIONS: 'loading',
- },
- },
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement