Skip to content
Snippets Groups Projects
Commit b441f392 authored by thombje's avatar thombje
Browse files

added hasMore global state

parent e00eea92
No related branches found
No related tags found
No related merge requests found
......@@ -46,7 +46,10 @@ class Header extends React.Component<MoviesProps, MyState> {
getMovieByColumnType(columnType : services.ColumnType, value: string, neededData: string) {
services.queryFetch(services.generateQuery(columnType, value, neededData) , 'POST')
.then(res => res.json())
.then(res => this.props.moviesStore.setMovies(res.data.getMovieByColumnType))
.then(res => {
this.props.moviesStore.setHasMore(false);
this.props.moviesStore.setMovies(res.data.getMovieByColumnType);
})
}
}
......
......@@ -4,6 +4,7 @@ import InfiniteScroll from "react-infinite-scroller";
import { MoviesStore, MoviesStoreImplementation } from "./MoviesStore";
import { inject, observer } from 'mobx-react';
import * as services from './services';
import { observe } from 'mobx';
interface MoviesProps {
moviesStore: MoviesStoreImplementation
......@@ -14,7 +15,9 @@ function Movies(props: MoviesProps){
// const [movies, setMovies] = useState([]);
useEffect(() => {
if (MoviesStore.hasMore){
getAllMovies({lim: 13});
}
}, []);
......@@ -33,7 +36,10 @@ function Movies(props: MoviesProps){
services.queryFetch(generateAllMoviesQuery(params.lim), 'POST')
.then(res => res.json())
// .then(res => setMovies(res.data.getAllMovies))
.then(res => props.moviesStore.setMovies(res.data.getAllMovies))
.then(res => {
props.moviesStore.setMovies(res.data.getAllMovies);
props.moviesStore.setHasMore(true);
})
}
......@@ -53,7 +59,7 @@ function Movies(props: MoviesProps){
<InfiniteScroll
pageStart={0}
loadMore={() => getAllMovies({ lim: MoviesStore.movies.length + 13 })}
hasMore={true || false}
hasMore={MoviesStore.hasMore}
useWindow={true}
loader={
<div key="loading" className="loader">
......@@ -67,5 +73,4 @@ function Movies(props: MoviesProps){
}
export default inject('moviesStore')(observer(Movies))
......@@ -4,20 +4,29 @@ interface Movie {
}
export class MoviesStoreImplementation {
movies: Movie[] = [];
hasMore: boolean = true;
constructor() {
makeObservable(this, {
movies: observable,
setMovies: action
setMovies: action,
hasMore: observable,
setHasMore: action
});
}
setMovies(movies: any) {
this.movies = movies;
}
setHasMore(hasMore: boolean) {
this.hasMore = hasMore;
}
}
export const MoviesStore = new MoviesStoreImplementation();
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment