@@ -16,23 +16,29 @@ import {
16
16
17
17
class Challenges extends Component {
18
18
componentDidMount ( ) {
19
- const { activeProjectId, filterChallengeName , resetSidebarActiveParams, menu, projectId, challenges , status , projectDetail : reduxProjectInfo } = this . props
19
+ const { activeProjectId, resetSidebarActiveParams, menu, projectId } = this . props
20
20
if ( menu === 'NULL' && activeProjectId !== - 1 ) {
21
21
resetSidebarActiveParams ( )
22
22
} else {
23
- const id = activeProjectId > 0 ? activeProjectId : ( projectId ? parseInt ( projectId ) : null )
24
- // only load challenge if it's init state
23
+ this . props . loadChallengesByPage ( 1 , projectId ? parseInt ( projectId ) : - 1 , CHALLENGE_STATUS . ACTIVE , '' )
24
+ if ( projectId ) {
25
+ this . props . loadProject ( projectId )
26
+ }
27
+ }
28
+ }
29
+
30
+ componentWillReceiveProps ( nextProps ) {
31
+ this . reloadChallenges ( nextProps )
32
+ }
33
+
34
+ reloadChallenges ( props ) {
35
+ const { activeProjectId, projectDetail : reduxProjectInfo , projectId, challengeProjectId, loadProject } = props
36
+ if ( activeProjectId !== challengeProjectId ) {
37
+ this . props . loadChallengesByPage ( 1 , projectId ? parseInt ( projectId ) : - 1 , CHALLENGE_STATUS . ACTIVE , '' )
25
38
if (
26
- challenges . length === 0 ||
27
- status !== CHALLENGE_STATUS . ACTIVE ||
28
- filterChallengeName ||
29
- `${ activeProjectId } ` !== `${ projectId } `
39
+ ( ! reduxProjectInfo || `${ reduxProjectInfo . id } ` !== projectId )
30
40
) {
31
- // load first page for challenges
32
- this . props . loadChallengesByPage ( 1 , id , CHALLENGE_STATUS . ACTIVE , '' )
33
- }
34
- if ( ! reduxProjectInfo || reduxProjectInfo . id !== id ) {
35
- this . props . loadProject ( id )
41
+ loadProject ( projectId )
36
42
}
37
43
}
38
44
}
@@ -94,7 +100,8 @@ Challenges.propTypes = {
94
100
}
95
101
96
102
const mapStateToProps = ( { challenges, sidebar, projects } ) => ( {
97
- ...challenges ,
103
+ ..._ . omit ( challenges , [ 'projectId' ] ) ,
104
+ challengeProjectId : challenges . projectId ,
98
105
activeProjectId : sidebar . activeProjectId ,
99
106
projects : sidebar . projects ,
100
107
projectDetail : projects . projectDetail
0 commit comments