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, })); } }