Skip to content

Commit 3970b26

Browse files
authored
Merge pull request #177 from suppermancool/issue-171
#171 fix load challenge after change project id
2 parents 4f268c0 + dcc50d2 commit 3970b26

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

src/actions/challenges.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export function loadChallengesByPage (page, projectId, status, filterChallengeNa
4444
dispatch({
4545
type: LOAD_CHALLENGES_PENDING,
4646
challenges: [],
47-
projectId: projectId ? `${projectId}` : '',
47+
projectId: projectId,
4848
status,
4949
filterChallengeName,
5050
perPage: PAGE_SIZE,

src/containers/Challenges/index.js

+20-13
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,29 @@ import {
1616

1717
class Challenges extends Component {
1818
componentDidMount () {
19-
const { activeProjectId, filterChallengeName, resetSidebarActiveParams, menu, projectId, challenges, status, projectDetail: reduxProjectInfo } = this.props
19+
const { activeProjectId, resetSidebarActiveParams, menu, projectId } = this.props
2020
if (menu === 'NULL' && activeProjectId !== -1) {
2121
resetSidebarActiveParams()
2222
} 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, '')
2538
if (
26-
challenges.length === 0 ||
27-
status !== CHALLENGE_STATUS.ACTIVE ||
28-
filterChallengeName ||
29-
`${activeProjectId}` !== `${projectId}`
39+
(!reduxProjectInfo || `${reduxProjectInfo.id}` !== projectId)
3040
) {
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)
3642
}
3743
}
3844
}
@@ -94,7 +100,8 @@ Challenges.propTypes = {
94100
}
95101

96102
const mapStateToProps = ({ challenges, sidebar, projects }) => ({
97-
...challenges,
103+
..._.omit(challenges, ['projectId']),
104+
challengeProjectId: challenges.projectId,
98105
activeProjectId: sidebar.activeProjectId,
99106
projects: sidebar.projects,
100107
projectDetail: projects.projectDetail

src/reducers/challenges.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ const initialState = {
3737
status: '',
3838
perPage: 0,
3939
page: 1,
40-
totalChallenges: 0
40+
totalChallenges: 0,
41+
projectId: -1
4142
}
4243

4344
function toastrSuccess (title, message) {

0 commit comments

Comments
 (0)