@@ -9,7 +9,7 @@ import Modal from 'components/modal/Modal';
9
9
import StatusTimeline from './components/StatusTimeline' ;
10
10
import Loading from 'pages/Loading' ;
11
11
import Action from './components/Action' ;
12
- import { NodeStatus } from 'types/node' ;
12
+ import { InternalDKGInfo , NodeStatus } from 'types/node' ;
13
13
import useGetResults from './components/utils/useGetResults' ;
14
14
import UserIDTable from './components/UserIDTable' ;
15
15
import DKGStatusTable from './components/DKGStatusTable' ;
@@ -42,7 +42,7 @@ const ElectionShow: FC = () => {
42
42
43
43
const [ nodeProxyAddresses , setNodeProxyAddresses ] = useState < Map < string , string > > ( new Map ( ) ) ;
44
44
const [ nodeToSetup , setNodeToSetup ] = useState < [ string , string ] > ( null ) ;
45
- // The status of each node
45
+ // The status of each node. Key is the node's address.
46
46
const [ DKGStatuses , setDKGStatuses ] = useState < Map < string , NodeStatus > > ( new Map ( ) ) ;
47
47
48
48
const [ nodeLoading , setNodeLoading ] = useState < Map < string , boolean > > ( null ) ;
@@ -51,6 +51,25 @@ const ElectionShow: FC = () => {
51
51
const ongoingItem = 'ongoingAction' + electionID ;
52
52
const nodeToSetupItem = 'nodeToSetup' + electionID ;
53
53
54
+ const notifyDKGState = ( node : string , info : InternalDKGInfo ) => {
55
+ console . log ( 'DKG node updated:' , info ) ;
56
+ switch ( info . getStatus ( ) ) {
57
+ case NodeStatus . Failed :
58
+ console . log ( 'DKG node failed' ) ;
59
+ setOngoingAction ( OngoingAction . None ) ;
60
+ break ;
61
+ case NodeStatus . Setup :
62
+ setOngoingAction ( OngoingAction . None ) ;
63
+ setStatus ( Status . Setup ) ;
64
+ break ;
65
+ }
66
+
67
+ const newDKGStatuses = new Map ( DKGStatuses ) ;
68
+ newDKGStatuses . set ( node , info . getStatus ( ) ) ;
69
+ setDKGStatuses ( newDKGStatuses ) ;
70
+ console . log ( 'dkg statuses:' , DKGStatuses ) ;
71
+ } ;
72
+
54
73
// Fetch result when available after a status change
55
74
useEffect ( ( ) => {
56
75
if ( status === Status . ResultAvailable && isResultAvailable ) {
@@ -76,6 +95,7 @@ const ElectionShow: FC = () => {
76
95
const storedOngoingAction = JSON . parse ( window . localStorage . getItem ( ongoingItem ) ) ;
77
96
78
97
if ( storedOngoingAction !== null ) {
98
+ console . log ( 'stored ongoing action:' , storedOngoingAction ) ;
79
99
setOngoingAction ( storedOngoingAction ) ;
80
100
}
81
101
@@ -141,14 +161,20 @@ const ElectionShow: FC = () => {
141
161
142
162
// TODO: can be modified such that if the majority of the node are
143
163
// initialized than the election status can still be set to initialized
144
- if ( statuses . includes ( NodeStatus . NotInitialized ) ) return ;
164
+ if ( statuses . includes ( NodeStatus . NotInitialized ) ) {
165
+ setOngoingAction ( OngoingAction . None ) ;
166
+ setStatus ( Status . Initial ) ;
167
+ return ;
168
+ }
145
169
146
170
if ( statuses . includes ( NodeStatus . Setup ) ) {
171
+ setOngoingAction ( OngoingAction . None ) ;
147
172
setStatus ( Status . Setup ) ;
148
173
return ;
149
174
}
150
175
151
176
if ( statuses . includes ( NodeStatus . Unreachable ) ) return ;
177
+ if ( statuses . includes ( NodeStatus . Failed ) ) return ;
152
178
153
179
setStatus ( Status . Initialized ) ;
154
180
@@ -220,8 +246,6 @@ const ElectionShow: FC = () => {
220
246
setOngoingAction = { setOngoingAction }
221
247
nodeToSetup = { nodeToSetup }
222
248
setNodeToSetup = { setNodeToSetup }
223
- DKGStatuses = { DKGStatuses }
224
- setDKGStatuses = { setDKGStatuses }
225
249
/>
226
250
) }
227
251
</ div >
@@ -248,6 +272,9 @@ const ElectionShow: FC = () => {
248
272
setDKGStatuses = { setDKGStatuses }
249
273
setTextModalError = { setTextModalError }
250
274
setShowModalError = { setShowModalError }
275
+ ongoingAction = { ongoingAction }
276
+ notifyDKGState = { notifyDKGState }
277
+ nodeToSetup = { nodeToSetup }
251
278
/>
252
279
</ div >
253
280
</ div >
0 commit comments