From 0f034112e4b4a9343957e059d0e0751ebcc9cb50 Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Wed, 13 Nov 2019 14:27:55 +0200 Subject: [PATCH] useSeasons renamed to useSelectableSeasons --- ...{useSeasons.js => useSelectableSeasons.js} | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) rename src/routes/Detail/VideosList/{useSeasons.js => useSelectableSeasons.js} (67%) diff --git a/src/routes/Detail/VideosList/useSeasons.js b/src/routes/Detail/VideosList/useSelectableSeasons.js similarity index 67% rename from src/routes/Detail/VideosList/useSeasons.js rename to src/routes/Detail/VideosList/useSelectableSeasons.js index d4bfc6135..04815b4fa 100644 --- a/src/routes/Detail/VideosList/useSeasons.js +++ b/src/routes/Detail/VideosList/useSelectableSeasons.js @@ -1,6 +1,6 @@ const React = require('react'); -const seasonsReducer = (state, action) => { +const reducer = (state, action) => { switch (action.type) { case 'videos-changed': { const seasons = action.videos @@ -40,32 +40,38 @@ const seasonsReducer = (state, action) => { } }; -const useSeasons = (metaItem) => { - const [{ selectedSeason, seasons }, dispatch] = React.useReducer( - seasonsReducer, - [metaItem], - (metaItem) => { - const videos = metaItem && Array.isArray(metaItem.videos) ? metaItem.videos : []; - return seasonsReducer({}, { - type: 'videos-changed', - videos - }); - } +const initializer = (videos) => { + const initialState = { + seasons: [], + selectedSeason: null + }; + const initAction = { + type: 'videos-changed', + videos + }; + + return reducer(initialState, initAction); +}; + +const useSelectableSeasons = (videos) => { + const [{ seasons, selectedSeason }, dispatch] = React.useReducer( + reducer, + videos, + initializer ); - const setSeason = React.useCallback((season) => { + const selectSeason = React.useCallback((season) => { dispatch({ type: 'season-changed', season }); }, []); React.useEffect(() => { - const videos = metaItem && Array.isArray(metaItem.videos) ? metaItem.videos : []; dispatch({ type: 'videos-changed', videos }); - }, [metaItem]); - return [selectedSeason, seasons, setSeason]; + }, [videos]); + return [seasons, selectedSeason, selectSeason]; }; -module.exports = useSeasons; +module.exports = useSelectableSeasons;