|
1 | | -import { assign } from 'xstate'; |
| 1 | +import { assign, actions } from 'xstate'; |
2 | 2 | import speedModes from '../config/speedModes'; |
3 | 3 | import sound from '../lib/sound'; |
4 | 4 | import GameStatusCodes from '../config/gameStatusCodes'; |
5 | 5 |
|
| 6 | +const { send } = actions; |
| 7 | + |
6 | 8 | const recordMachine = { |
7 | 9 | initial: 'ended', |
8 | 10 | states: { |
@@ -78,17 +80,29 @@ const machine = { |
78 | 80 | on: { |
79 | 81 | JOIN: { target: 'connected' }, |
80 | 82 | FAILURE_JOIN: { target: 'disconnected', actions: ['handleFailureJoin'] }, |
81 | | - FAILURE: { target: 'disconnected', actions: ['handleDisconnection'] }, |
| 83 | + FAILURE: { target: 'disconnected' }, |
82 | 84 | }, |
83 | 85 | }, |
84 | 86 | disconnected: { |
| 87 | + entry: send( |
| 88 | + { type: 'SHOW_ERROR_MESSAGE' }, |
| 89 | + { |
| 90 | + delay: 5000, |
| 91 | + }, |
| 92 | + ), |
| 93 | + on: { |
| 94 | + JOIN: { target: 'connected', actions: ['handleReconnection'] }, |
| 95 | + SHOW_ERROR_MESSAGE: { target: 'disconnectedWithMessage', actions: ['handleDisconnection'] }, |
| 96 | + }, |
| 97 | + }, |
| 98 | + disconnectedWithMessage: { |
85 | 99 | on: { |
86 | 100 | JOIN: { target: 'connected', actions: ['handleReconnection'] }, |
87 | 101 | }, |
88 | 102 | }, |
89 | 103 | connected: { |
90 | 104 | on: { |
91 | | - FAILURE: { target: 'disconnected', actions: ['handleDisconnection'] }, |
| 105 | + FAILURE: { target: 'disconnected' }, |
92 | 106 | }, |
93 | 107 | }, |
94 | 108 | }, |
@@ -269,6 +283,7 @@ const states = { |
269 | 283 | network: { |
270 | 284 | none: 'none', |
271 | 285 | disconnected: 'disconnected', |
| 286 | + disconnectedWithMessage: 'disconnectedWithMessage', |
272 | 287 | connected: 'connected', |
273 | 288 | }, |
274 | 289 | }; |
|
0 commit comments