mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 03:22:11 +00:00
meta details state mapped in the initial state too
This commit is contained in:
parent
a60e5ab082
commit
98fa16c9c1
1 changed files with 29 additions and 31 deletions
|
|
@ -1,43 +1,41 @@
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
const { useServices } = require('stremio/services');
|
const { useServices } = require('stremio/services');
|
||||||
|
|
||||||
|
const mapMetaDetailsState = (state) => {
|
||||||
|
const selected = state.meta_details.selected;
|
||||||
|
const meta_groups = state.meta_details.meta_groups.map((meta_group) => {
|
||||||
|
if (meta_group.content.type === 'Ready') {
|
||||||
|
meta_group.content.content.released = new Date(meta_group.content.content.released);
|
||||||
|
meta_group.content.content.videos = meta_group.content.content.videos.map((video) => {
|
||||||
|
video.released = new Date(video.released);
|
||||||
|
video.upcoming = !isNaN(video.released.getTime()) ?
|
||||||
|
video.released.getTime() > Date.now()
|
||||||
|
:
|
||||||
|
false;
|
||||||
|
video.href = `#/metadetails/${meta_group.content.content.type}/${meta_group.content.content.id}/${video.id}`;
|
||||||
|
// TODO add watched and progress
|
||||||
|
return video;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return meta_group;
|
||||||
|
});
|
||||||
|
const streams_groups = state.meta_details.streams_groups;
|
||||||
|
return { selected, meta_groups, streams_groups };
|
||||||
|
};
|
||||||
|
|
||||||
const useMetaDetails = (urlParams) => {
|
const useMetaDetails = (urlParams) => {
|
||||||
const { core } = useServices();
|
const { core } = useServices();
|
||||||
const [metaDetails, setMetaDetails] = React.useState({
|
const [metaDetails, setMetaDetails] = React.useState(() => {
|
||||||
selected: {
|
const state = core.getState();
|
||||||
meta_resource_ref: null,
|
const metaDetails = mapMetaDetailsState(state);
|
||||||
streams_resource_ref: null
|
return metaDetails;
|
||||||
},
|
|
||||||
meta_groups: [],
|
|
||||||
streams_groups: []
|
|
||||||
});
|
});
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const onNewModel = () => {
|
const onNewModel = () => {
|
||||||
const state = core.getState();
|
const state = core.getState();
|
||||||
const selected = state.meta_details.selected;
|
const metaDetails = mapMetaDetailsState(state);
|
||||||
const meta_groups = state.meta_details.meta_groups.map((meta_group) => {
|
setMetaDetails(metaDetails);
|
||||||
if (meta_group.content.type === 'Ready') {
|
|
||||||
meta_group.content.content.released = new Date(meta_group.content.content.released);
|
|
||||||
meta_group.content.content.videos = meta_group.content.content.videos.map((video) => {
|
|
||||||
video.released = new Date(video.released);
|
|
||||||
video.upcoming = !isNaN(video.released.getTime()) ?
|
|
||||||
video.released.getTime() > Date.now()
|
|
||||||
:
|
|
||||||
false;
|
|
||||||
video.href = `#/metadetails/${meta_group.content.content.type}/${meta_group.content.content.id}/${video.id}`;
|
|
||||||
// TODO add watched and progress
|
|
||||||
return video;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return meta_group;
|
|
||||||
});
|
|
||||||
const streams_groups = state.meta_details.streams_groups;
|
|
||||||
setMetaDetails({
|
|
||||||
selected,
|
|
||||||
meta_groups,
|
|
||||||
streams_groups
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
core.on('NewModel', onNewModel);
|
core.on('NewModel', onNewModel);
|
||||||
core.dispatch({
|
core.dispatch({
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue