@@ -10,13 +10,23 @@ const STATUS = {
10
10
} ;
11
11
12
12
class Loadable extends Component {
13
- static defaultProps = {
14
- renderError : ( err ) => {
13
+
14
+ state = { status : STATUS . INITIAL , value : null , show : false } ;
15
+
16
+ handleClose = ( ) => {
17
+ this . setState ( { show : false } ) ;
18
+ }
19
+
20
+ handleShow = ( ) => {
21
+ this . setState ( { show : true } ) ;
22
+ }
23
+
24
+ renderError = ( err ) => {
15
25
console . error ( err ) ;
16
26
// If it is a permissions error then it might be a rate limit
17
27
if ( err . status === 403 ) {
18
28
return (
19
- < BS . Modal show >
29
+ < BS . Modal show = { this . state . show } >
20
30
< BS . Modal . Header >
21
31
< BS . Modal . Title > < h2 > Insufficient Permissions </ h2 > (or rate limit exceeded)</ BS . Modal . Title >
22
32
</ BS . Modal . Header >
@@ -32,7 +42,7 @@ class Loadable extends Component {
32
42
</ code >
33
43
< br />
34
44
< br />
35
- < Button bsStyle = "danger" > Ok</ Button >
45
+ < Button bsStyle = "danger" onClick = { this . handleClose } > Ok</ Button >
36
46
</ div >
37
47
</ BS . Modal . Body >
38
48
</ BS . Modal >
@@ -43,7 +53,7 @@ class Loadable extends Component {
43
53
) ;
44
54
} else {
45
55
return (
46
- < BS . Modal show >
56
+ < BS . Modal show = { this . state . show } >
47
57
< BS . Modal . Header >
48
58
</ BS . Modal . Header >
49
59
< BS . Modal . Body >
@@ -58,16 +68,13 @@ class Loadable extends Component {
58
68
</ code >
59
69
< br />
60
70
< br />
61
- < Button bsStyle = "danger" > Ok</ Button >
71
+ < Button bsStyle = "danger" onClick = { this . handleClose } > Ok</ Button >
62
72
</ div >
63
73
</ BS . Modal . Body >
64
74
</ BS . Modal >
65
75
) ;
66
76
}
67
- }
68
- } ;
69
-
70
- state = { status : STATUS . INITIAL , value : null , show : false } ;
77
+ } ;
71
78
72
79
componentDidMount ( ) {
73
80
const { promise } = this . props ;
@@ -84,11 +91,13 @@ class Loadable extends Component {
84
91
onResolve = ( value ) => {
85
92
// TODO: Find out why this is being called multiple times
86
93
this . setState ( { status : STATUS . RESOLVED , value} ) ;
94
+ // window.alert(value)
87
95
} ;
88
96
89
97
onError = ( value ) => {
90
98
// TODO: Find out why this is being called multiple times
91
99
if ( this . state . status !== STATUS . ERROR ) {
100
+ // window.alert(value)
92
101
this . setState ( { status : STATUS . ERROR , value} ) ;
93
102
}
94
103
} ;
@@ -105,16 +114,16 @@ class Loadable extends Component {
105
114
106
115
render ( ) {
107
116
const { status, value } = this . state ;
108
- let { renderLoading, renderLoaded, renderError} = this . props ;
109
-
117
+ let { renderLoading, renderLoaded } = this . props ;
110
118
renderLoading = renderLoading || this . renderLoading ;
111
119
112
120
if ( status === STATUS . INITIAL ) {
113
- return renderLoading ( ) ;
121
+ return this . renderLoading ( ) ;
114
122
} else if ( status === STATUS . RESOLVED ) {
115
123
return renderLoaded ( value ) ;
116
124
} else {
117
- return renderError ( value ) ;
125
+ this . handleShow ( ) ;
126
+ return this . renderError ( value ) ;
118
127
}
119
128
}
120
129
}
0 commit comments