Merge branch 'selectMovie' into 'master'
Add auto selection of the first movie after fetching See merge request !24
This commit is contained in:
commit
c9a3fbd90c
@ -144,7 +144,7 @@ export default class MovieList extends React.Component {
|
|||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
const movies = this.props.movieStore.movies;
|
const movies = this.props.movieStore.movies;
|
||||||
const selectedMovieId = this.props.movieStore.selectedMovie.imdbId;
|
const selectedMovieId = this.props.movieStore.selectedImdbId;
|
||||||
let index = movies.map((el) => el.imdb_id).indexOf(selectedMovieId);
|
let index = movies.map((el) => el.imdb_id).indexOf(selectedMovieId);
|
||||||
if (index === -1) {
|
if (index === -1) {
|
||||||
index = 0;
|
index = 0;
|
||||||
@ -162,7 +162,7 @@ export default class MovieList extends React.Component {
|
|||||||
{selectedMovie &&
|
{selectedMovie &&
|
||||||
<MovieDetails
|
<MovieDetails
|
||||||
movie={selectedMovie}
|
movie={selectedMovie}
|
||||||
fetching={this.props.movieStore.selectedMovie.fetchingDetails}
|
fetching={this.props.movieStore.fetchingDetails}
|
||||||
getMovieDetails={this.props.getMovieDetails}
|
getMovieDetails={this.props.getMovieDetails}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
@ -2,23 +2,25 @@ const defaultState = {
|
|||||||
movies: [],
|
movies: [],
|
||||||
filter: "",
|
filter: "",
|
||||||
perPage: 30,
|
perPage: 30,
|
||||||
selectedMovie: {
|
selectedImdbId: "",
|
||||||
imdbId: "",
|
|
||||||
fetchingDetails: false,
|
fetchingDetails: false,
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function movieStore(state = defaultState, action) {
|
export default function movieStore(state = defaultState, action) {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case 'MOVIE_LIST_FETCH_FULFILLED':
|
case 'MOVIE_LIST_FETCH_FULFILLED':
|
||||||
|
let selectedImdbId = "";
|
||||||
|
// Select the first movie
|
||||||
|
if (action.payload.data.length > 0) {
|
||||||
|
selectedImdbId = action.payload.data[0].imdb_id;
|
||||||
|
}
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
movies: action.payload.data,
|
movies: action.payload.data,
|
||||||
|
selectedImdbId: selectedImdbId,
|
||||||
})
|
})
|
||||||
case 'MOVIE_GET_DETAILS_PENDING':
|
case 'MOVIE_GET_DETAILS_PENDING':
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedMovie: Object.assign({}, state.selectedMovie, {
|
|
||||||
fetchingDetails: true,
|
fetchingDetails: true,
|
||||||
}),
|
|
||||||
})
|
})
|
||||||
case 'MOVIE_GET_DETAILS_FULFILLED':
|
case 'MOVIE_GET_DETAILS_FULFILLED':
|
||||||
let movies = state.movies.slice();
|
let movies = state.movies.slice();
|
||||||
@ -26,20 +28,16 @@ export default function movieStore(state = defaultState, action) {
|
|||||||
movies[index] = action.payload.data;
|
movies[index] = action.payload.data;
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
movies: movies,
|
movies: movies,
|
||||||
selectedMovie: Object.assign({}, state.selectedMovie, {
|
|
||||||
fetchingDetails: false,
|
fetchingDetails: false,
|
||||||
}),
|
|
||||||
})
|
})
|
||||||
case 'SELECT_MOVIE':
|
case 'SELECT_MOVIE':
|
||||||
// Don't select the movie if we're fetching another movie's details
|
// Don't select the movie if we're fetching another movie's details
|
||||||
if (state.selectedMovie.fetchingDetails) {
|
if (state.fetchingDetails) {
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
|
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedMovie: Object.assign({}, state.selectedMovie, {
|
selectedImdbId: action.imdbId,
|
||||||
imdbId: action.imdbId,
|
|
||||||
}),
|
|
||||||
})
|
})
|
||||||
default:
|
default:
|
||||||
return state
|
return state
|
||||||
|
Loading…
x
Reference in New Issue
Block a user