Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. // Available variables:
  2. // - Machine
  3. // - interpret
  4. // - assign
  5. // - send
  6. // - sendParent
  7. // - spawn
  8. // - raise
  9. // - actions
  10. // - XState (all XState exports)
  11.  
  12. const fetchMachine = Machine({
  13. id: 'Recommendations',
  14. initial: 'loading',
  15. context: {
  16. highlighted: null,
  17. Recommendations: [],
  18. },
  19. states: {
  20. loading: {
  21. invoke: {
  22. src: () => setTimeout(() => Promise.resolve(), 500),
  23. onDone: 'loaded',
  24. onError: 'hasError',
  25. },
  26. },
  27. loaded: {
  28. entry: ['saveRecommendations', 'setHighlighted'],
  29. type: 'parallel',
  30. states: {
  31. ui: {
  32. initial: 'ready',
  33. states: {
  34. ready: {
  35. on: {
  36. OMIT_Recommendation: {
  37. actions: ['sendRequestOmit', 'findNextHighlighted'],
  38. },
  39. },
  40. },
  41. },
  42. },
  43. background: {
  44. initial: 'waiting',
  45. states: {
  46. waiting: {
  47. on: {
  48. SEND_REQUEST_OMIT: 'omiting',
  49. },
  50. },
  51. omiting: {
  52. invoke: {
  53. src: setTimeout(() => Promise.resolve(), 500),
  54. onDone: 'updatingRecommendations',
  55. // onError: 'autoRetry',
  56. },
  57. },
  58. updatingRecommendations: {
  59. invoke: {
  60. src: setTimeout(() => Promise.resolve(), 500),
  61. onDone: {
  62. target: 'waiting',
  63. actions: ['updateRecommendationsContext'],
  64. },
  65. // onError: 'waiting'
  66. },
  67. },
  68. },
  69. },
  70. },
  71. },
  72. hasError: {
  73. RETRY_LOAD_RecommendationS: 'loading',
  74. },
  75. },
  76. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement