diff --git a/src/projects/detail/ProjectDetail.jsx b/src/projects/detail/ProjectDetail.jsx index c04dc9162..87b59ed93 100644 --- a/src/projects/detail/ProjectDetail.jsx +++ b/src/projects/detail/ProjectDetail.jsx @@ -10,6 +10,7 @@ import { loadProjectDashboard } from '../actions/projectDashboard' import { clearLoadedProject } from '../actions/project' import { acceptOrRefuseInvite } from '../actions/projectMember' import { loadProjects } from '../actions/loadProjects' +import { getEmptyProjectObject } from '../reducers/project' import { LOAD_PROJECT_FAILURE, PROJECT_ROLE_CUSTOMER, PROJECT_ROLE_OWNER, @@ -153,7 +154,7 @@ class ProjectDetail extends Component { componentWillReceiveProps(nextProps) { const {isProcessing, isLoading, error, project, match, showUserInvited} = nextProps // handle just deleted projects - if (! (error || isLoading || isProcessing) && _.isEmpty(project)) + if (! (error || isLoading || isProcessing) && _.isEqual(getEmptyProjectObject(), project)) this.props.history.push('/projects/') if (project && project.name) { document.title = `${project.name} - Topcoder` diff --git a/src/projects/reducers/project.js b/src/projects/reducers/project.js index e6c094151..7b57e87b0 100644 --- a/src/projects/reducers/project.js +++ b/src/projects/reducers/project.js @@ -29,6 +29,10 @@ import _ from 'lodash' import update from 'react-addons-update' import { clean } from '../../helpers/utils' +export function getEmptyProjectObject() { + return { invites: [], members: [] } +} + const initialState = { isLoading: true, processing: false, @@ -41,12 +45,11 @@ const initialState = { attachmentTags: null, error: false, inviteError: false, - project: { - members: [], - invites: [] // invites are pushed directly into it hence need to declare first - }, + // invites are pushed directly into it hence need to declare first + // using the getEmptyProjectObject method + project: getEmptyProjectObject(), assetsMembers: {}, - projectNonDirty: {}, + projectNonDirty: getEmptyProjectObject(), updateExisting: false, phases: null, phasesNonDirty: null, @@ -188,8 +191,8 @@ export const projectState = function (state=initialState, action) { case LOAD_PROJECT_PENDING: return Object.assign({}, state, { isLoading: true, - project: null, - projectNonDirty: null + project: getEmptyProjectObject(), + projectNonDirty: getEmptyProjectObject(), }) case LOAD_PROJECT_SUCCESS: @@ -352,8 +355,8 @@ export const projectState = function (state=initialState, action) { case GET_PROJECTS_SUCCESS: return Object.assign({}, state, { isLoading: true, // this is excpected to be default value when there is not project loaded - project: {}, - projectNonDirty: {}, + project: getEmptyProjectObject(), + projectNonDirty: getEmptyProjectObject(), phases: null, phasesNonDirty: null, }) @@ -523,8 +526,8 @@ export const projectState = function (state=initialState, action) { return Object.assign({}, state, { processing: false, error: false, - project: {}, - projectNonDirty: {} + project: getEmptyProjectObject(), + projectNonDirty: getEmptyProjectObject(), }) // Project attachments