useMetaDetails maps metaGroups props without selecting a meta

This commit is contained in:
NikolaBorislavovHristov 2019-11-11 16:36:30 +02:00
parent dad7351629
commit 05866d181a

View file

@ -3,48 +3,30 @@ const { useServices } = require('stremio/services');
const useMetaDetails = (urlParams) => {
const { core } = useServices();
const [metaDetails, setMetaDetails] = React.useState([null, []]);
const [metaDetails, setMetaDetails] = React.useState([[], [], null]);
React.useEffect(() => {
const onNewModel = () => {
const state = core.getState();
const [metaRequest] = state.meta_details.selected;
const readyMeta = state.meta_details.metas
.filter((meta) => meta.content.type === 'Ready')
.map((meta) => {
meta.content.content.released = new Date(meta.content.content.released);
meta.content.content.videos = meta.content.content.videos.map((video) => {
video.released = new Date(video.released);
video.upcoming = !isNaN(video.released.getTime()) ?
video.released.getTime() > Date.now()
:
false;
// TODO add href, watched and progress
return video;
});
return meta;
})
.shift();
if (metaRequest) {
if (readyMeta) {
setMetaDetails([readyMeta, state.meta_details.streams]);
} else if (state.meta_details.metas.length === 0) {
const errMeta = {
content: {
type: 'Err',
content: {
type: 'EmptyContent'
}
}
};
setMetaDetails([errMeta, state.meta_details.streams]);
} else if (state.meta_details.metas.every((meta) => meta.content.type === 'Err')) {
setMetaDetails([state.meta_details.metas[0], state.meta_details.streams]);
} else {
setMetaDetails([null, state.meta_details.streams]);
}
} else {
setMetaDetails([null, state.meta_details.streams]);
}
setMetaDetails([
state.meta_details.metas.map((metaGroup) => {
if (metaGroup.content.type === 'Ready') {
metaGroup.content.content.released = new Date(metaGroup.content.content.released);
metaGroup.content.content.videos = metaGroup.content.content.videos.map((video) => {
video.released = new Date(video.released);
video.upcoming = !isNaN(video.released.getTime()) ?
video.released.getTime() > Date.now()
:
false;
// TODO add href, watched and progress
return video;
});
}
return metaGroup;
}),
state.meta_details.streams,
state.meta_details.selected
]);
};
core.on('NewModel', onNewModel);
core.dispatch({