diff --git a/js/components/ascribe_detail/edition_container.js b/js/components/ascribe_detail/edition_container.js index 165913d4..2c479d24 100644 --- a/js/components/ascribe_detail/edition_container.js +++ b/js/components/ascribe_detail/edition_container.js @@ -17,6 +17,7 @@ import { setDocumentTitle } from '../../utils/dom_utils'; */ let EditionContainer = React.createClass({ propTypes: { + params: React.PropTypes.object, location: React.PropTypes.object }, @@ -24,6 +25,31 @@ let EditionContainer = React.createClass({ return EditionStore.getState(); }, + componentDidMount() { + EditionStore.listen(this.onChange); + + // Every time we enter the edition detail page, just reset the edition + // store as it will otherwise display wrong/old data once the user loads + // the edition detail a second time + EditionActions.updateEdition({}); + + this.loadEdition(); + }, + + // This is done to update the container when the user clicks on the prev or next + // button to update the URL parameter (and therefore to switch pieces) + componentWillReceiveProps(nextProps) { + if(this.props.params.editionId !== nextProps.params.editionId) { + EditionActions.updateEdition({}); + EditionActions.fetchOne(nextProps.params.editionId); + } + }, + + componentWillUnmount() { + window.clearInterval(this.state.timerId); + EditionStore.unlisten(this.onChange); + }, + onChange(state) { this.setState(state); if (!state.edition.digital_work) { @@ -36,31 +62,6 @@ let EditionContainer = React.createClass({ } }, - componentDidMount() { - EditionStore.listen(this.onChange); - EditionActions.fetchOne(this.props.params.editionId); - }, - - // This is done to update the container when the user clicks on the prev or next - // button to update the URL parameter (and therefore to switch pieces) - componentWillReceiveProps(nextProps) { - if(this.props.params.editionId !== nextProps.params.editionId) { - EditionActions.updateEdition({}); - EditionActions.fetchOne(nextProps.params.editionId); - } - }, - - componentWillUnmount() { - // Every time we're leaving the edition detail page, - // just reset the edition that is saved in the edition store - // as it will otherwise display wrong/old data once the user loads - // the edition detail a second time - EditionActions.updateEdition({}); - window.clearInterval(this.state.timerId); - EditionStore.unlisten(this.onChange); - }, - - loadEdition() { EditionActions.fetchOne(this.props.params.editionId); }, diff --git a/js/components/ascribe_detail/piece_container.js b/js/components/ascribe_detail/piece_container.js index 462ac05b..3895b8b2 100644 --- a/js/components/ascribe_detail/piece_container.js +++ b/js/components/ascribe_detail/piece_container.js @@ -49,6 +49,7 @@ import { setDocumentTitle } from '../../utils/dom_utils'; */ let PieceContainer = React.createClass({ propTypes: { + params: React.PropTypes.object, location: React.PropTypes.object }, @@ -70,15 +71,16 @@ let PieceContainer = React.createClass({ PieceListStore.listen(this.onChange); UserActions.fetchCurrentUser(); PieceStore.listen(this.onChange); - PieceActions.fetchOne(this.props.params.pieceId); + + // Every time we enter the piece detail page, just reset the piece + // store as it will otherwise display wrong/old data once the user loads + // the piece detail a second time + PieceActions.updatePiece({}); + + this.loadPiece(); }, componentWillUnmount() { - // Every time we're leaving the piece detail page, - // just reset the piece that is saved in the piece store - // as it will otherwise display wrong/old data once the user loads - // the piece detail a second time - PieceActions.updatePiece({}); PieceStore.unlisten(this.onChange); UserStore.unlisten(this.onChange); PieceListStore.unlisten(this.onChange); diff --git a/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js b/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js index 07e84b0e..f2e22412 100644 --- a/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js +++ b/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js @@ -47,6 +47,10 @@ import { setDocumentTitle } from '../../../../../utils/dom_utils'; * This is the component that implements resource/data specific functionality */ let PieceContainer = React.createClass({ + propTypes: { + params: React.PropTypes.object + }, + getInitialState() { return mergeOptions( PieceStore.getState(), @@ -58,6 +62,11 @@ let PieceContainer = React.createClass({ PieceStore.listen(this.onChange); PieceActions.fetchOne(this.props.params.pieceId); UserStore.listen(this.onChange); + + // Every time we enter the piece detail page, just reset the piece + // store as it will otherwise display wrong/old data once the user loads + // the piece detail a second time + PieceActions.updatePiece({}); }, // This is done to update the container when the user clicks on the prev or next @@ -70,11 +79,6 @@ let PieceContainer = React.createClass({ }, componentWillUnmount() { - // Every time we're leaving the piece detail page, - // just reset the piece that is saved in the piece store - // as it will otherwise display wrong/old data once the user loads - // the piece detail a second time - PieceActions.updatePiece({}); PieceStore.unlisten(this.onChange); UserStore.unlisten(this.onChange); }, diff --git a/js/components/whitelabel/wallet/components/cyland/cyland_detail/cyland_piece_container.js b/js/components/whitelabel/wallet/components/cyland/cyland_detail/cyland_piece_container.js index 79d63abf..1c61d573 100644 --- a/js/components/whitelabel/wallet/components/cyland/cyland_detail/cyland_piece_container.js +++ b/js/components/whitelabel/wallet/components/cyland/cyland_detail/cyland_piece_container.js @@ -52,9 +52,8 @@ let CylandPieceContainer = React.createClass({ UserStore.listen(this.onChange); PieceListStore.listen(this.onChange); - // Every time we're leaving the piece detail page, - // just reset the piece that is saved in the piece store - // as it will otherwise display wrong/old data once the user loads + // Every time we enter the piece detail page, just reset the piece + // store as it will otherwise display wrong/old data once the user loads // the piece detail a second time PieceActions.updatePiece({}); diff --git a/js/components/whitelabel/wallet/components/ikonotv/ikonotv_detail/ikonotv_piece_container.js b/js/components/whitelabel/wallet/components/ikonotv/ikonotv_detail/ikonotv_piece_container.js index 0c24de95..4e2f6a63 100644 --- a/js/components/whitelabel/wallet/components/ikonotv/ikonotv_detail/ikonotv_piece_container.js +++ b/js/components/whitelabel/wallet/components/ikonotv/ikonotv_detail/ikonotv_piece_container.js @@ -52,9 +52,8 @@ let IkonotvPieceContainer = React.createClass({ UserStore.listen(this.onChange); PieceListStore.listen(this.onChange); - // Every time we're leaving the piece detail page, - // just reset the piece that is saved in the piece store - // as it will otherwise display wrong/old data once the user loads + // Every time we enter the piece detail page, just reset the piece + // store as it will otherwise display wrong/old data once the user loads // the piece detail a second time PieceActions.updatePiece({});