Grégoire Delattre d6ed40ba6a
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
Fix the new show event poster
2021-03-02 17:27:13 +01:00

135 lines
2.7 KiB
JavaScript

import { configureAxios, request } from "../requests";
import { prettyEpisodeName } from "../utils";
import { sendNotification } from "./notifications";
export function fetchShows(url) {
return request("SHOW_LIST_FETCH", configureAxios().get(url), [
updateLastShowsFetchUrl(url),
]);
}
export function getShowDetails(imdbId) {
return request(
"SHOW_GET_DETAILS",
configureAxios().post(`/shows/${imdbId}/refresh`),
null,
{ imdbId }
);
}
export function getEpisodeDetails(imdbId, season, episode) {
return request(
"EPISODE_GET_DETAILS",
configureAxios().post(
`/shows/${imdbId}/seasons/${season}/episodes/${episode}`
),
null,
{
imdbId,
season,
episode,
}
);
}
export function fetchShowDetails(imdbId) {
return request(
"SHOW_FETCH_DETAILS",
configureAxios().get(`/shows/${imdbId}`),
null,
{ imdbId }
);
}
export function addShowToWishlist(imdbId, season = null, episode = null) {
return request(
"SHOW_ADD_TO_WISHLIST",
configureAxios().post(`/wishlist/shows/${imdbId}`, {
season: season,
episode: episode,
}),
[updateShowWishlistStore(imdbId, true, season, episode)]
);
}
export function deleteShowFromWishlist(imdbId) {
return request(
"SHOW_DELETE_FROM_WISHLIST",
configureAxios().delete(`/wishlist/shows/${imdbId}`),
[updateShowWishlistStore(imdbId, false)]
);
}
export function showWishlistToggle(
currentState,
imdbId,
season = 0,
episode = 0
) {
if (currentState === true) {
return deleteShowFromWishlist(imdbId);
} else {
return addShowToWishlist(imdbId, season, episode);
}
}
export function updateShowWishlistStore(
imdbId,
wishlisted,
season = null,
episode = null
) {
return {
type: "SHOW_UPDATE_STORE_WISHLIST",
payload: {
imdbId,
season,
episode,
},
};
}
export function getShowExploreOptions() {
return request(
"SHOW_GET_EXPLORE_OPTIONS",
configureAxios().get("/shows/explore/options")
);
}
export function selectShow(imdbId) {
return {
type: "SELECT_SHOW",
payload: {
imdbId,
},
};
}
export function updateLastShowsFetchUrl(url) {
return {
type: "UPDATE_LAST_SHOWS_FETCH_URL",
payload: {
url: url,
},
};
}
export const newEpisodeEvent = (data) => {
return (dispatch) => {
dispatch(
sendNotification({
icon: "video-camera",
autohide: true,
delay: 10000,
title: `${prettyEpisodeName(
data.show_title,
data.season,
data.episode
)} added to the library`,
imageUrl: `img/shows/${data.show_imdb_id}/poster.jpg`,
})
);
};
};