Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 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. // STATES
  13. // loading
  14. // hasError
  15. // loaded
  16. // -
  17. // EVENTS
  18.  
  19. const smartRecomendations = Machine({
  20. id: 'recomendations',
  21. initial: 'loading',
  22. context: {
  23. highlighted: null,
  24. recomendations: [],
  25. },
  26. states: {
  27. loading: {
  28. invoke: {
  29. src: () => setTimeout(() => Promise.resolve(), 500),
  30. onDone: 'loaded',
  31. onError: 'hasError',
  32. },
  33. },
  34. loaded: {
  35. entry: ['saveRecomendations', 'setHighlighted'],
  36. type: 'parallel',
  37. states: {
  38. ui: {
  39. initial: 'ready',
  40. states: {
  41. ready: {
  42. on: {
  43. OMIT_RECOMENDATION: {
  44. actions: [
  45. send('SEND_REQUEST_OMIT'),
  46. 'findNextHighlighted',
  47. ],
  48. },
  49. },
  50. },
  51. omitHasError: {},
  52. },
  53. },
  54. background: {
  55. initial: 'waiting',
  56. states: {
  57. waiting: {
  58. on: {
  59. SEND_REQUEST_OMIT: 'omiting',
  60. },
  61. },
  62. omiting: {
  63. invoke: {
  64. src: setTimeout(() => Promise.resolve(), 500),
  65. onDone: 'updatingRecomendations',
  66. // onError: 'waiting'
  67. },
  68. },
  69. updatingRecomendations: {
  70. invoke: {
  71. src: setTimeout(() => Promise.resolve(), 500),
  72. onDone: {
  73. target: 'waiting',
  74. actions: ['updateRecomendationsContext']
  75. },
  76. // onError: 'waiting'
  77. }
  78. },
  79. },
  80. },
  81. },
  82. },
  83. hasError: {
  84. type: 'final',
  85. },
  86. },
  87. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement