diff options
author | Renard | 2019-09-11 19:54:48 -0300 |
---|---|---|
committer | Renard | 2019-09-11 19:54:48 -0300 |
commit | 5382ed028c7ec554f760affa7f533b15421959c9 (patch) | |
tree | 1d897091ee555f05c702b5c3c2130d2aae406ce8 /src/App.js | |
parent | 12efc9102e1c2590492e9ead60d7de87944dc47f (diff) | |
download | bai-client-5382ed028c7ec554f760affa7f533b15421959c9.tar.gz bai-client-5382ed028c7ec554f760affa7f533b15421959c9.tar.xz bai-client-5382ed028c7ec554f760affa7f533b15421959c9.zip |
First commit
Diffstat (limited to 'src/App.js')
-rw-r--r-- | src/App.js | 99 |
1 files changed, 75 insertions, 24 deletions
@@ -1,26 +1,77 @@ -import React from 'react'; -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( - <div className="App"> - <header className="App-header"> - <img src={logo} className="App-logo" alt="logo" /> - <p> - Edit <code>src/App.js</code> and save to reload. - </p> - <a - className="App-link" - href="https://reactjs.org" - target="_blank" - rel="noopener noreferrer" - > - Learn React - </a> - </header> - </div> - ); +import React, { Component } from 'react'; +import { render } from "react-dom"; +import { Router, Link, Match } from "@reach/router"; +import 'fomantic-ui-css/semantic.css'; +import "./App.css"; + +import { Dropdown, Menu, Icon, Loader, Container, Grid } from "semantic-ui-react"; +import Home from "./Home"; +import BBSThread from "./BBSThread"; +import Board from "./Board"; +import NotFound from "./NotFound" + +class App extends Component { + constructor() { + super(); + this.state = { + boardList: [], + isLoaded: false + } + + } + + componentDidMount() { + fetch("https://bienvenidoainternet.org/cgi/api/boards") + .then((response) => { + return response.json(); + }) + .then((resource) => { + this.setState({ boardList: resource["boards"], isLoaded: true }); + }) + .catch(console.error); + } + + render() { + if (!this.state.isLoaded) { + if (!this.state.isLoaded) { + return ( + <Loader active centered > + Cargando ... + </Loader> + ) + } + } + + const { boardList } = this.state; + const pathList = boardList.map(board => "/" + board.dir) + return ( + <Container> + <Menu inverted> + <Menu.Item header>B.a.I</Menu.Item> + <Menu.Item as={Link} to="/"><Icon name='home' /> Home</Menu.Item> + <Dropdown text='BBS' className='link item'> + <Dropdown.Menu> + {boardList.map(board => board.board_type === 1 ? <Dropdown.Item as={Link} to={`/board/${board.dir}`}>/{board.dir}/ - {board.name}</Dropdown.Item> : null)} + </Dropdown.Menu> + </Dropdown> + <Dropdown text='Imageboard' className='link item'> + <Dropdown.Menu> + {boardList.map(board => board.board_type === 0 ? <Dropdown.Item as={Link} to={`/board/${board.dir}`}>/{board.dir}/ - {board.name}</Dropdown.Item> : null)} + </Dropdown.Menu> + </Dropdown> + </Menu> + <Router> + <Home boardList={this.state.boardList} path="/" /> + <BBSThread path="/:dir/read/:id"> + <BBSThread path=":active" /> + </BBSThread> + <Board path="/board/:dir" /> + <NotFound default /> + </Router> + </Container > + ); + } } -export default App; + +render(<App />, document.getElementById("root"));
\ No newline at end of file |