mirror of https://gitlab.com/ecentrics/concordia
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							115 lines
						
					
					
						
							4.5 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							115 lines
						
					
					
						
							4.5 KiB
						
					
					
				| import React, { Children, Component } from 'react'; | |
| import { connect } from 'react-redux'; | |
| import '../assets/css/loading-container.css'; | |
| import ethereum_logo from '../assets/images/ethereum_logo.svg'; | |
| import ipfs_logo from '../assets/images/ipfs_logo.svg'; | |
| import orbitdb_logo from '../assets/images/orbitdb_logo.png'; | |
| import logo from '../assets/images/logo.png'; | |
| 
 | |
| class LoadingContainer extends Component { | |
|     render() { | |
|         if (this.props.web3.status === 'failed' || !this.props.web3.networkId) { | |
|             return ( | |
|                 <main className="loading-screen"> | |
|                     <div className="pure-g"> | |
|                         <div className="pure-u-1-1"> | |
|                             <img src={ethereum_logo} alt="ethereum_logo" className="loading-img" /> | |
|                             <p><strong>This browser has no connection to the Ethereum network</strong></p> | |
|                             Please make sure that: | |
|                             <ul> | |
|                                 <li>MetaMask is unlocked and pointed to the correct network</li> | |
|                                 <li>The app has been granted the right to connect to your account</li> | |
|                             </ul> | |
|                         </div> | |
|                     </div> | |
|                 </main> | |
|             ); | |
|         } | |
| 
 | |
|         if (this.props.web3.status === 'initialized' && Object.keys(this.props.accounts).length === 0) { | |
|             return ( | |
|                 <main className="loading-screen"> | |
|                     <div> | |
|                         <img src={ethereum_logo} alt="ethereum_logo" className="loading-img" /> | |
|                         <p><strong>We can't find any Ethereum accounts!</strong></p> | |
|                         <p>Please make sure that MetaMask is unlocked.</p> | |
|                     </div> | |
|                 </main> | |
|             ); | |
|         } | |
|  | |
|         if (!this.props.contractDeployed) { | |
|             return ( | |
|                 <main className="loading-screen"> | |
|                     <div> | |
|                         <img src={ethereum_logo} alt="ethereum_logo" className="loading-img" /> | |
|                         <p><strong>No contracts found on the current network!</strong></p> | |
|                         <p>Please make sure that you are connected to the correct network | |
|                             and the contracts are deployed.</p> | |
|                     </div> | |
|                 </main> | |
|             ); | |
|         } | |
|  | |
|         if (!this.props.contractInitialized) { | |
|             return ( | |
|                 <main className="loading-screen"> | |
|                     <div> | |
|                         <img src={ethereum_logo} alt="ethereum_logo" className="loading-img" /> | |
|                         <p><strong>Initializing contracts...</strong></p> | |
|                     </div> | |
|                 </main> | |
|             ); | |
|         } | |
|  | |
|         if (!this.props.ipfsInitialized) { | |
|             return ( | |
|                 <main className="loading-screen"> | |
|                     <div> | |
|                         <img src={ipfs_logo} alt="ipfs_logo" className="loading-img" /> | |
|                         <p><strong>Initializing IPFS...</strong></p> | |
|                     </div> | |
|                 </main> | |
|             ); | |
|         } | |
|  | |
|         if (!this.props.orbitInitialized) { | |
|             const message = process.env.NODE_ENV === 'development' | |
|                 ? 'If needed, please sign the transaction in MetaMask to create the databases.' | |
|                 : 'Please sign the transaction in MetaMask to create the databases.'; | |
|             return ( | |
|                 <main className="loading-screen"> | |
|                     <div> | |
|                         <img src={orbitdb_logo} alt="orbitdb_logo" className="loading-img" /> | |
|                         <p><strong>Preparing OrbitDB...</strong></p> | |
|                         <p>{message}</p> | |
|                     </div> | |
|                 </main> | |
|             ); | |
|         } | |
| 
 | |
|         if (this.props.drizzleStatus.initialized) return Children.only(this.props.children); | |
| 
 | |
|         return ( | |
|             <main className="loading-screen"> | |
|                 <div> | |
|                     <img src={logo} alt="app_logo" className="loading-img" /> | |
|                     <p><strong>Loading dapp...</strong></p> | |
|                 </div> | |
|             </main> | |
|         ); | |
|     } | |
| } | |
| 
 | |
| const mapStateToProps = (state) => ({ | |
|     accounts: state.accounts, | |
|     drizzleStatus: state.drizzleStatus, | |
|     breezeStatus: state.breezeStatus, | |
|     web3: state.web3, | |
|     contractInitialized: state.contracts.Forum.initialized, | |
|     contractDeployed: state.contracts.Forum.deployed, | |
|     ipfsInitialized: state.ipfs.initialized, | |
|     orbitInitialized: state.orbit.initialized, | |
| }); | |
| 
 | |
| export default connect(mapStateToProps)(LoadingContainer);
 | |
| 
 |