135 lines
2.7 KiB
JavaScript
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`,
|
|
})
|
|
);
|
|
};
|
|
};
|