@@ -9,6 +9,8 @@ import Form from './components/Form/Form';
99import Tab from './components/Tab/Tab' ;
1010import MessageComp from './components/MessageComp/MessageComp' ;
1111import SettingsBar from './components/SettingsBar/SettingsBar' ;
12+ import Dropdown from './components/Dropdown/Dropdown' ;
13+ import Version from './components/Version/Version' ;
1214
1315import styles from './styles/App.scss' ;
1416import fade from './styles/transitions/fade.scss' ;
@@ -40,11 +42,11 @@ class App extends React.Component {
4042 parameter : '' ,
4143 fetchRequestStatus : undefined ,
4244 contracts : [ ] ,
43- settingsVisible : false ,
4445 }
46+ }
4547
46- this . handleMenuItemIconClick = this . handleMenuItemIconClick . bind ( this ) ;
47- this . handleOutsideClick = this . handleOutsideClick . bind ( this ) ;
48+ componentDidMount ( ) {
49+ this . fetchData ( 'http://localhost:9090/solc/list' ) ;
4850 }
4951
5052 handleMenuItemIconClick ( index ) {
@@ -74,13 +76,14 @@ class App extends React.Component {
7476 settingsVisible : false ,
7577 } ) ;
7678
77- this . fetchData ( parameter ) ;
79+ const url = `http://localhost:9090/files/${ encodeURIComponent ( parameter ) || ' ' } ?extension=sol` ;
80+ this . fetchData ( url ) ;
7881 }
7982
80- fetchData ( parameter ) {
83+ fetchData ( url ) {
8184 this . handleRequestPending ( ) ;
8285
83- fetch ( `http://localhost:9090/files/ ${ encodeURIComponent ( parameter ) || ' ' } ?extension=sol` )
86+ fetch ( url )
8487 . then ( res => res . json ( ) )
8588 . then ( data => {
8689 data . error
@@ -96,10 +99,18 @@ class App extends React.Component {
9699 }
97100
98101 handleRequestSuccess ( response ) {
99- this . setState ( {
100- fetchRequestStatus : 'success' ,
101- contracts : response ,
102- } ) ;
102+
103+ if ( response . some ( item => item . version ) ) {
104+ this . setState ( {
105+ fetchRequestStatus : 'success' ,
106+ versions : response ,
107+ } ) ;
108+ } else {
109+ this . setState ( {
110+ fetchRequestStatus : 'success' ,
111+ contracts : response ,
112+ } ) ;
113+ }
103114
104115 this . props . loadingMessageOff ( ) ;
105116 }
@@ -110,50 +121,16 @@ class App extends React.Component {
110121 this . props . getErrorMessage ( message ) ;
111122 }
112123
113- handleSettingsiconClick ( ) {
114- this . toggleOutsideClick ( ) ;
115-
116- this . setState ( prevState => ( {
117- settingsVisible : ! prevState . settingsVisible ,
118- } ) )
119- }
120-
121- handleSettingsSaveButtonClick ( ) {
122- this . toggleOutsideClick ( ) ;
123-
124- this . setState ( {
125- settingsVisible : false ,
126- } ) ;
127- }
128-
129- toggleOutsideClick ( ) {
130- if ( ! this . state . settingsVisible ) {
131- document . addEventListener ( 'click' , this . handleOutsideClick ) ;
132- } else {
133- document . removeEventListener ( 'click' , this . handleOutsideClick ) ;
134- }
135- }
136-
137- handleOutsideClick ( e ) {
138- if ( this . node . contains ( e . target ) ) {
139- return ;
140- }
141-
142- document . removeEventListener ( 'click' , this . handleOutsideClick ) ;
143-
144- this . setState ( {
145- settingsVisible : false ,
146- } ) ;
147- }
148-
149124 render ( ) {
150125
151- const { fetchRequestStatus, contracts, settingsVisible , configPlaceholder } = this . state ;
126+ const { fetchRequestStatus, contracts, versions } = this . state ;
152127 const { children, showLoadingMessage, showErrorMessage, errorMessage } = this . props ;
153128
154129 return (
155130 < div className = { styles [ 'app' ] } >
156- < TopNavBar onIconClick = { ( ) => this . handleSettingsiconClick ( ) } >
131+ < TopNavBar
132+ fetchRequestStatus = { fetchRequestStatus }
133+ versions = { versions } >
157134 < Form
158135 submitButton = { true }
159136 inputTypes = { [ { name : 'contractsPath' , placeholder : 'Insert contracts path' } ] }
@@ -163,12 +140,6 @@ class App extends React.Component {
163140 onInputKeyUp = { ( ) => this . handleInputSubmit ( ) }
164141 />
165142 </ TopNavBar >
166- < div ref = { node => { this . node = node ; } } >
167- < SettingsBar
168- active = { ! ! settingsVisible }
169- onSaveButtonClick = { ( ) => this . handleSettingsSaveButtonClick ( ) }
170- />
171- </ div >
172143 < CSSTransitionGroup
173144 transitionName = { fade }
174145 transitionAppear = { true }
@@ -202,7 +173,7 @@ class App extends React.Component {
202173 trnasitionEnterTimeout = { 300 }
203174 transitionLeaveTimeout = { 300 }
204175 >
205- { fetchRequestStatus === 'success' &&
176+ { fetchRequestStatus === 'success' && contracts . length &&
206177 < Tab data = { contracts } onMenuItemIconClick = { this . handleMenuItemIconClick } >
207178 { children }
208179 </ Tab >
0 commit comments