@@ -20,10 +20,12 @@ import {
20
20
options ,
21
21
changeStatus ,
22
22
changeState ,
23
+ call ,
23
24
send ,
24
25
emit ,
25
26
channelId ,
26
- disconnect
27
+ disconnect ,
28
+ fsmId
27
29
} from './internal'
28
30
import { unpackTx , buildTx } from '../tx/builder'
29
31
@@ -66,6 +68,10 @@ export function awaitingConnection (channel, message, state) {
66
68
if ( message . params . data . event === 'channel_reestablished' ) {
67
69
return { handler : awaitingOpenConfirmation }
68
70
}
71
+ if ( message . params . data . event === 'fsm_up' ) {
72
+ fsmId . set ( channel , message . params . data . fsm_id )
73
+ return { handler : awaitingConnection }
74
+ }
69
75
return { handler : awaitingConnection }
70
76
}
71
77
if ( message . method === 'channels.error' ) {
@@ -74,6 +80,17 @@ export function awaitingConnection (channel, message, state) {
74
80
}
75
81
}
76
82
83
+ export async function awaitingReconnection ( channel , message , state ) {
84
+ if ( message . method === 'channels.info' ) {
85
+ if ( message . params . data . event === 'fsm_up' ) {
86
+ fsmId . set ( channel , message . params . data . fsm_id )
87
+ changeState ( channel , ( await call ( channel , 'channels.get.offchain_state' , { } ) ) . signed_tx )
88
+ return { handler : channelOpen }
89
+ }
90
+ }
91
+ return handleUnexpectedMessage ( channel , message , state )
92
+ }
93
+
77
94
export async function awaitingChannelCreateTx ( channel , message , state ) {
78
95
const tag = {
79
96
initiator : 'initiator_sign' ,
@@ -171,6 +188,9 @@ export async function channelOpen (channel, message, state) {
171
188
// are blocked until channel is reestablished.
172
189
emit ( channel , message . params . data . event )
173
190
return { handler : channelOpen }
191
+ case 'fsm_up' :
192
+ fsmId . set ( channel , message . params . data . fsm_id )
193
+ return { handler : channelOpen }
174
194
case 'close_mutual' :
175
195
return { handler : channelOpen }
176
196
case 'closing' :
0 commit comments