diff --git a/frontend/src/Activity/History/HistoryConnector.js b/frontend/src/Activity/History/HistoryConnector.js index c351487a6..3bf224871 100644 --- a/frontend/src/Activity/History/HistoryConnector.js +++ b/frontend/src/Activity/History/HistoryConnector.js @@ -8,6 +8,7 @@ import selectUniqueIds from 'Utilities/Object/selectUniqueIds'; import withCurrentPage from 'Components/withCurrentPage'; import * as historyActions from 'Store/Actions/historyActions'; import { fetchEpisodes, clearEpisodes } from 'Store/Actions/episodeActions'; +import { clearEpisodeFiles } from 'Store/Actions/episodeFileActions'; import History from './History'; function createMapStateToProps() { @@ -28,7 +29,8 @@ function createMapStateToProps() { const mapDispatchToProps = { ...historyActions, fetchEpisodes, - clearEpisodes + clearEpisodes, + clearEpisodeFiles }; class HistoryConnector extends Component { @@ -68,6 +70,7 @@ class HistoryConnector extends Component { unregisterPagePopulator(this.repopulate); this.props.clearHistory(); this.props.clearEpisodes(); + this.props.clearEpisodeFiles(); } // @@ -150,7 +153,8 @@ HistoryConnector.propTypes = { setHistoryTableOption: PropTypes.func.isRequired, clearHistory: PropTypes.func.isRequired, fetchEpisodes: PropTypes.func.isRequired, - clearEpisodes: PropTypes.func.isRequired + clearEpisodes: PropTypes.func.isRequired, + clearEpisodeFiles: PropTypes.func.isRequired }; export default withCurrentPage( diff --git a/frontend/src/Episode/Summary/EpisodeSummaryConnector.js b/frontend/src/Episode/Summary/EpisodeSummaryConnector.js index e17f7b750..096524848 100644 --- a/frontend/src/Episode/Summary/EpisodeSummaryConnector.js +++ b/frontend/src/Episode/Summary/EpisodeSummaryConnector.js @@ -1,6 +1,8 @@ +import PropTypes from 'prop-types'; +import React, { Component } from 'react'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import { deleteEpisodeFile } from 'Store/Actions/episodeFileActions'; +import { fetchEpisodeFile, deleteEpisodeFile } from 'Store/Actions/episodeFileActions'; import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector'; import createEpisodeFileSelector from 'Store/Selectors/createEpisodeFileSelector'; import createSeriesSelector from 'Store/Selectors/createSeriesSelector'; @@ -52,8 +54,50 @@ function createMapDispatchToProps(dispatch, props) { id: props.episodeFileId, episodeEntity: props.episodeEntity })); + }, + + dispatchFetchEpisodeFile() { + dispatch(fetchEpisodeFile({ + id: props.episodeFileId + })); } }; } -export default connect(createMapStateToProps, createMapDispatchToProps)(EpisodeSummary); +class EpisodeSummaryConnector extends Component { + + // + // Lifecycle + + componentDidMount() { + const { + episodeFileId, + path, + dispatchFetchEpisodeFile + } = this.props; + + if (episodeFileId && !path) { + dispatchFetchEpisodeFile({ id: episodeFileId }); + } + } + + // + // Render + + render() { + const { + dispatchFetchEpisodeFile, + ...otherProps + } = this.props; + + return ; + } +} + +EpisodeSummaryConnector.propTypes = { + episodeFileId: PropTypes.number, + path: PropTypes.string, + dispatchFetchEpisodeFile: PropTypes.func.isRequired +}; + +export default connect(createMapStateToProps, createMapDispatchToProps)(EpisodeSummaryConnector); diff --git a/frontend/src/Store/Actions/episodeFileActions.js b/frontend/src/Store/Actions/episodeFileActions.js index ec7221a22..3ab92fb0b 100644 --- a/frontend/src/Store/Actions/episodeFileActions.js +++ b/frontend/src/Store/Actions/episodeFileActions.js @@ -31,6 +31,7 @@ export const defaultState = { // // Actions Types +export const FETCH_EPISODE_FILE = 'episodeFiles/fetchEpisodeFile'; export const FETCH_EPISODE_FILES = 'episodeFiles/fetchEpisodeFiles'; export const DELETE_EPISODE_FILE = 'episodeFiles/deleteEpisodeFile'; export const DELETE_EPISODE_FILES = 'episodeFiles/deleteEpisodeFiles'; @@ -40,6 +41,7 @@ export const CLEAR_EPISODE_FILES = 'episodeFiles/clearEpisodeFiles'; // // Action Creators +export const fetchEpisodeFile = createThunk(FETCH_EPISODE_FILE); export const fetchEpisodeFiles = createThunk(FETCH_EPISODE_FILES); export const deleteEpisodeFile = createThunk(DELETE_EPISODE_FILE); export const deleteEpisodeFiles = createThunk(DELETE_EPISODE_FILES); @@ -55,6 +57,7 @@ const deleteEpisodeFileHelper = createRemoveItemHandler(section, '/episodeFile') // Action Handlers export const actionHandlers = handleThunks({ + [FETCH_EPISODE_FILE]: createFetchHandler(section, '/episodeFile'), [FETCH_EPISODE_FILES]: createFetchHandler(section, '/episodeFile'), [DELETE_EPISODE_FILE]: function(getState, payload, dispatch) {