From 665d536481c3026fd7a274673ee9715f09b04fc4 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 16 Aug 2019 22:46:12 -0700 Subject: [PATCH] Fixed: Infinite spinner when toggling seasons on multiple series from season pass --- frontend/src/Store/Actions/seriesActions.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/frontend/src/Store/Actions/seriesActions.js b/frontend/src/Store/Actions/seriesActions.js index 52eb0739b..30fca8c36 100644 --- a/frontend/src/Store/Actions/seriesActions.js +++ b/frontend/src/Store/Actions/seriesActions.js @@ -17,7 +17,7 @@ import { updateItem } from './baseActions'; const MONITOR_TIMEOUT = 1000; const seasonsToUpdate = {}; -let seasonMonitorToggleTimeout = null; +const seasonMonitorToggleTimeouts = {}; // // Variables @@ -271,16 +271,19 @@ export const actionHandlers = handleThunks({ }, [TOGGLE_SEASON_MONITORED]: function(getState, payload, dispatch) { - if (seasonMonitorToggleTimeout) { - seasonMonitorToggleTimeout = clearTimeout(seasonMonitorToggleTimeout); - } - const { seriesId: id, seasonNumber, monitored } = payload; + const seasonMonitorToggleTimeout = seasonMonitorToggleTimeouts[id]; + + if (seasonMonitorToggleTimeout) { + clearTimeout(seasonMonitorToggleTimeout); + delete seasonMonitorToggleTimeouts[id]; + } + const series = getState().series.items.find((s) => s.id === id); const seasons = _.cloneDeep(series.seasons); const season = seasons.find((s) => s.seasonNumber === seasonNumber); @@ -296,7 +299,7 @@ export const actionHandlers = handleThunks({ seasonsToUpdate[seasonNumber] = monitored; season.monitored = monitored; - seasonMonitorToggleTimeout = setTimeout(() => { + seasonMonitorToggleTimeouts[id] = setTimeout(() => { createAjaxRequest({ url: `/series/${id}`, method: 'PUT',