diff options
author | Renard | 2019-09-23 22:14:00 -0300 |
---|---|---|
committer | Renard | 2019-09-23 22:14:00 -0300 |
commit | 8d7891a25bbf94d5c678b71379519453ed846e55 (patch) | |
tree | 0b3ea8ca418877ce9e491db9b00ff5b8ecab2ed5 /src/ThreadList.js | |
parent | 9e42ccb82dcab1c86f048e6bbc8df11f4759169b (diff) | |
download | bai-client-8d7891a25bbf94d5c678b71379519453ed846e55.tar.gz bai-client-8d7891a25bbf94d5c678b71379519453ed846e55.tar.xz bai-client-8d7891a25bbf94d5c678b71379519453ed846e55.zip |
Lista de hilos
Diffstat (limited to 'src/ThreadList.js')
-rw-r--r-- | src/ThreadList.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/ThreadList.js b/src/ThreadList.js new file mode 100644 index 0000000..c5eb990 --- /dev/null +++ b/src/ThreadList.js @@ -0,0 +1,84 @@ +import React, { Component } from "react"; +import { Header, Loader, List, Card, Image, Icon } from "semantic-ui-react"; +import { Link } from "@reach/router"; +import Moment from "react-moment"; +import "moment/locale/es"; + +class ThreadList extends Component { + constructor(props) { + super(props); + this.state = { isLoading: true, threadList: [] }; + } + + componentDidMount() { + const { dir } = this.props; + fetch( + `https://bienvenidoainternet.org/cgi/api/list?dir=${dir}&replies=0&limit=30&nohtml=1` + ) + .then(response => { + return response.json(); + }) + .then(resource => { + this.setState({ threadList: resource.threads, isLoading: false }); + }); + } + + render() { + const { dir, boardList } = this.props; + const { threadList, isLoading } = this.state; + + const currentBoard = boardList.find(board => { + return board.dir === dir; + }); + + if (isLoading) { + return ( + <Loader active centered="true"> + Cargando lista de hilos ... + </Loader> + ); + } + + const stripHtml = RegExp( + /(<script(\s|\S)*?<\/script>)|(<style(\s|\S)*?<\/style>)|(<!--(\s|\S)*?-->)|(<\/?(\s|\S)*?>)/g + ); + + return ( + <Card.Group centered itemsPerRow={4} stackable> + {threadList.map((thread, index) => { + return ( + <Card key={index} raised> + {currentBoard.allow_images === 1 ? ( + <Image + src={`https://bienvenidoainternet.org/${dir}/thumb/${thread.thumb}`} + ui={false} + style={{ maxHeight: "250px" }} + /> + ) : null} + <Card.Content> + <Card.Header as={Link} to={`/${dir}/read/${thread.id}`}> + {thread.subject} + </Card.Header> + <Card.Meta> + <span className="date"> + <Moment fromNow unix date={thread.timestamp} /> + </span> + </Card.Meta> + <Card.Description> + {thread.message.replace(stripHtml, "").substring(0, 200) + + " ..."} + </Card.Description> + </Card.Content> + <Card.Content extra> + <Icon name="reply" /> + {thread.total_replies} Respuestas + </Card.Content> + </Card> + ); + })} + </Card.Group> + ); + } +} + +export default ThreadList; |