From 0fceb69e52598844bbfbb44227b2366df0188cf5 Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Wed, 4 Dec 2019 21:56:24 +0200 Subject: [PATCH] ContinueWatching added to Board --- src/routes/Board/Board.js | 17 +++++++++++-- src/routes/Board/useContinueWatching.js | 33 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/routes/Board/useContinueWatching.js diff --git a/src/routes/Board/Board.js b/src/routes/Board/Board.js index 944339aa5..e811b8d77 100644 --- a/src/routes/Board/Board.js +++ b/src/routes/Board/Board.js @@ -1,6 +1,7 @@ const React = require('react'); const { MainNavBar, MetaRow } = require('stremio/common'); const useBoard = require('./useBoard'); +const useContinueWatching = require('./useContinueWatching'); const styles = require('./styles'); const CONTINUE_WATCHING_MENU = [ @@ -15,12 +16,24 @@ const CONTINUE_WATCHING_MENU = [ ]; const Board = () => { - const { catalog_resources } = useBoard(); + const board = useBoard(); + const continueWatching = useContinueWatching(); return (
- {catalog_resources.map((catalog_resource, index) => { + { + continueWatching.lib_items.length > 0 ? + + : + null + } + {board.catalog_resources.map((catalog_resource, index) => { const title = `${catalog_resource.addon_name} - ${catalog_resource.request.path.id} ${catalog_resource.request.path.type_name}`; switch (catalog_resource.content.type) { case 'Ready': diff --git a/src/routes/Board/useContinueWatching.js b/src/routes/Board/useContinueWatching.js new file mode 100644 index 000000000..d076d3573 --- /dev/null +++ b/src/routes/Board/useContinueWatching.js @@ -0,0 +1,33 @@ +const React = require('react'); +const { useServices } = require('stremio/services'); + +const mapContinueWatchingState = (state) => { + const lib_items = state.continue_watching.lib_items.map((lib_item) => { + lib_item.href = `#/metadetails/${lib_item.type}/${lib_item._id}${lib_item.state.video_id !== null ? `/${lib_item.state.video_id}` : ''}`; + return lib_item; + }); + return { lib_items }; +}; + +const useContinueWatching = () => { + const { core } = useServices(); + const [continueWatching, setContinueWatching] = React.useState(() => { + const state = core.getState(); + const continueWatching = mapContinueWatchingState(state); + return continueWatching; + }); + React.useLayoutEffect(() => { + const onNewState = () => { + const state = core.getState(); + const continueWatching = mapContinueWatchingState(state); + setContinueWatching(continueWatching); + }; + core.on('NewModel', onNewState); + return () => { + core.off('NewModel', onNewState); + }; + }, []); + return continueWatching; +}; + +module.exports = useContinueWatching;