mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-19 09:42:13 +00:00
useMetaDetails maps metaGroups props without selecting a meta
This commit is contained in:
parent
dad7351629
commit
05866d181a
1 changed files with 21 additions and 39 deletions
|
|
@ -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({
|
||||
|
|
|
|||
Loading…
Reference in a new issue