/*
List of movies.
Wrapped with the "withList" and "withCurrentUser" containers.
*/
import React, { PropTypes, Component } from 'react';
import { Button } from 'react-bootstrap';
import gql from 'graphql-tag';
import Movies from '../collection.js';
import { Components, registerComponent, ModalTrigger, withList, withCurrentUser } from 'meteor/nova:core';
const LoadMore = props => {e.preventDefault(); props.loadMore();}}>Load More ({props.count}/{props.totalCount})
class MoviesList extends Component {
renderNew() {
const component = (
Add Movie}
>
)
return !!this.props.currentUser ? component : null;
}
render() {
const canCreateNewMovie = Movies.options.mutations.new.check(this.props.currentUser);
if (this.props.loading) {
return
} else {
const hasMore = this.props.totalCount > this.props.results.length;
return (
{canCreateNewMovie ? this.renderNew() : null}
{this.props.results.map(movie =>
)}
{hasMore ?
:
No more movies
}
)
}
}
}
MoviesList.displayName = 'MoviesList';
export const MoviesListFragment = gql`
fragment moviesItemFragment on Movie {
_id
name
year
createdAt
user {
displayName
}
}
`;
const listOptions = {
collection: Movies,
queryName: 'moviesListQuery',
fragment: MoviesListFragment,
limit: 5,
};
registerComponent('MoviesList', MoviesList, withList(listOptions), withCurrentUser);