Add filter by post status

This commit is contained in:
riggraz
2019-09-03 12:58:44 +02:00
parent 0618974543
commit 88096b2262
9 changed files with 320 additions and 93 deletions

View File

@@ -3,76 +3,30 @@ import * as React from 'react';
import PostListItem from './PostListItem';
import Spinner from '../shared/Spinner';
import IBoard from '../../interfaces/IBoard';
import IPost from '../../interfaces/IPost';
interface Props {
board: IBoard;
}
interface State {
posts: Array<IPost>;
isLoading: boolean;
areLoading: boolean;
error: string;
}
class PostList extends React.Component<Props, State> {
constructor(props) {
super(props);
const PostList = ({ posts, areLoading, error }: Props) => (
<div className="box postList">
{ areLoading ? <Spinner /> : null }
{ error ? <span className="error">{error}</span> : null }
{
posts.map((post, i) => (
<PostListItem
title={post.title}
description={post.description}
postStatus={post.postStatus}
this.state = {
posts: [],
isLoading: true,
error: '',
};
}
async componentDidMount() {
const boardId = this.props.board.id;
try {
let res = await fetch(`http://localhost:3000/posts?board_id=${boardId}`);
let data = await res.json();
this.setState({isLoading: false});
this.setState({
posts: data.map(post => ({
title: post.title,
description: post.description,
postStatus: {
name: post.post_status_name,
color: post.post_status_color,
},
})),
});
} catch (e) {
this.setState({
error: 'An unknown error occurred, try again.'
});
key={i}
/>
))
}
}
render() {
const { posts, isLoading, error } = this.state;
return (
<div className="postList">
{ isLoading ? <Spinner /> : null }
{ error ? <span className="error">{error}</span> : null }
{
posts.map((post, i) => (
<PostListItem
title={post.title}
description={post.description}
postStatus={post.postStatus}
key={i}
/>
))
}
</div>
);
}
}
</div>
);
export default PostList;