import { configureAxios, request } from "../requests"; import { addAlertOk } from "./alerts"; import { sendNotification } from "./notifications"; export function updateLastMovieFetchUrl(url) { return { type: "UPDATE_LAST_MOVIE_FETCH_URL", payload: { url: url } }; } export function selectMovie(imdbId) { return { type: "SELECT_MOVIE", payload: { imdbId } }; } export function updateFilter(filter) { return { type: "MOVIE_UPDATE_FILTER", payload: { filter } }; } export function getMovieExploreOptions() { return request( "MOVIE_GET_EXPLORE_OPTIONS", configureAxios().get("/movies/explore/options") ); } export function getMovieDetails(imdbId) { return request( "MOVIE_GET_DETAILS", configureAxios().post(`/movies/${imdbId}/refresh`), null, { imdbId } ); } export function deleteMovie(imdbId, lastFetchUrl) { return request("MOVIE_DELETE", configureAxios().delete(`/movies/${imdbId}`), [ fetchMovies(lastFetchUrl), addAlertOk("Movie deleted") ]); } export function movieWishlistToggle(imdbId, currentState) { if (currentState == true) { return deleteMovieFromWishlist(imdbId); } else { return addMovieToWishlist(imdbId); } } export function addMovieToWishlist(imdbId) { return request( "MOVIE_ADD_TO_WISHLIST", configureAxios().post(`/wishlist/movies/${imdbId}`), [updateMovieWishlistStore(imdbId, true)] ); } export function deleteMovieFromWishlist(imdbId) { return request( "MOVIE_DELETE_FROM_WISHLIST", configureAxios().delete(`/wishlist/movies/${imdbId}`), [updateMovieWishlistStore(imdbId, false)] ); } export function updateMovieWishlistStore(imdbId, wishlisted) { return { type: "MOVIE_UPDATE_STORE_WISHLIST", payload: { imdbId, wishlisted } }; } export function fetchMovies(url) { return request("MOVIE_LIST_FETCH", configureAxios().get(url), [ updateLastMovieFetchUrl(url) ]); } export const newMovieEvent = data => { return dispatch => { dispatch( sendNotification({ icon: "film", autohide: true, delay: 10000, title: `${data.title} added to the library`, imageUrl: data.thumb }) ); }; };