import { Container, Loading } from './components/generic' import { log, callApi } from './modules/helpers' // import download from 'downloadjs' import DraftRocketeer from './assets/draft-rocketeer.png' import './App.css' import { useEffect, useState } from 'react' function App() { // /////////////////////////////// // State management // /////////////////////////////// const [ rocketeerId, setRocketeerId ] = useState() const [ rocketeer, setRocketeer ] = useState() const [ loading, setLoading ] = useState( false ) const [ error, setError ] = useState( false ) // /////////////////////////////// // Lifesycle management // /////////////////////////////// // Get ID from url useEffect( () => { const { search } = window.location const query = new URLSearchParams( search ) const id = Number( query.get( 'rocketeer' ) || 'none' ) log( 'Id found: ', id ) // Check if id is a number if( isNaN( id ) ) return setError( 'No rocketeer selected' ) // If all is good, set the ID to state return setRocketeerId( id ) }, [] ) // Get data from remote useEffect( ( ) => { if( !rocketeerId ) return // Load the rocketeer async ( async () => { try { setLoading( `Loading Rocketeer ${ rocketeerId }` ) const rocketeer = await callApi( `/rocketeer/${ rocketeerId }` ) log( 'Loaded rocketeer ', rocketeer ) setRocketeer( rocketeer ) } catch( e ) { setError( 'Rocketeer API error' ) log( 'Error getting rocketeer ', e ) } finally { setLoading( false ) } } )( ) }, [ rocketeerId ] ) // /////////////////////////////// // Rendering // /////////////////////////////// if( error ) return { error } if( rocketeerId === undefined || loading ) return if( rocketeer ) return {

{ rocketeer.name }

{ rocketeer.description || "This is a generic Rocketeer without a description. That should only happen during testing. Contact us on Discord if you see this." }

Download Jpeg Download Svg
return null } export default App