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> { ...@@ -46,7 +46,10 @@ class Header extends React.Component<MoviesProps, MyState> {
getMovieByColumnType(columnType : services.ColumnType, value: string, neededData: string) { getMovieByColumnType(columnType : services.ColumnType, value: string, neededData: string) {
services.queryFetch(services.generateQuery(columnType, value, neededData) , 'POST') services.queryFetch(services.generateQuery(columnType, value, neededData) , 'POST')
.then(res => res.json()) .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"; ...@@ -4,6 +4,7 @@ import InfiniteScroll from "react-infinite-scroller";
import { MoviesStore, MoviesStoreImplementation } from "./MoviesStore"; import { MoviesStore, MoviesStoreImplementation } from "./MoviesStore";
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import * as services from './services'; import * as services from './services';
import { observe } from 'mobx';
interface MoviesProps { interface MoviesProps {
moviesStore: MoviesStoreImplementation moviesStore: MoviesStoreImplementation
...@@ -14,7 +15,9 @@ function Movies(props: MoviesProps){ ...@@ -14,7 +15,9 @@ function Movies(props: MoviesProps){
// const [movies, setMovies] = useState([]); // const [movies, setMovies] = useState([]);
useEffect(() => { useEffect(() => {
if (MoviesStore.hasMore){
getAllMovies({lim: 13}); getAllMovies({lim: 13});
}
}, []); }, []);
...@@ -33,7 +36,10 @@ function Movies(props: MoviesProps){ ...@@ -33,7 +36,10 @@ function Movies(props: MoviesProps){
services.queryFetch(generateAllMoviesQuery(params.lim), 'POST') services.queryFetch(generateAllMoviesQuery(params.lim), 'POST')
.then(res => res.json()) .then(res => res.json())
// .then(res => setMovies(res.data.getAllMovies)) // .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){ ...@@ -53,7 +59,7 @@ function Movies(props: MoviesProps){
<InfiniteScroll <InfiniteScroll
pageStart={0} pageStart={0}
loadMore={() => getAllMovies({ lim: MoviesStore.movies.length + 13 })} loadMore={() => getAllMovies({ lim: MoviesStore.movies.length + 13 })}
hasMore={true || false} hasMore={MoviesStore.hasMore}
useWindow={true} useWindow={true}
loader={ loader={
<div key="loading" className="loader"> <div key="loading" className="loader">
...@@ -67,5 +73,4 @@ function Movies(props: MoviesProps){ ...@@ -67,5 +73,4 @@ function Movies(props: MoviesProps){
} }
export default inject('moviesStore')(observer(Movies)) export default inject('moviesStore')(observer(Movies))
...@@ -4,20 +4,29 @@ interface Movie { ...@@ -4,20 +4,29 @@ interface Movie {
} }
export class MoviesStoreImplementation { export class MoviesStoreImplementation {
movies: Movie[] = []; movies: Movie[] = [];
hasMore: boolean = true;
constructor() { constructor() {
makeObservable(this, { makeObservable(this, {
movies: observable, movies: observable,
setMovies: action setMovies: action,
hasMore: observable,
setHasMore: action
}); });
} }
setMovies(movies: any) { setMovies(movies: any) {
this.movies = movies; this.movies = movies;
} }
setHasMore(hasMore: boolean) {
this.hasMore = hasMore;
}
} }
export const MoviesStore = new MoviesStoreImplementation(); 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