diff --git a/src/projects/actions/loadProjects.js b/src/projects/actions/loadProjects.js index 677e3b7cb..8a1cd137c 100644 --- a/src/projects/actions/loadProjects.js +++ b/src/projects/actions/loadProjects.js @@ -4,7 +4,9 @@ import { SET_SEARCH_TERM, SET_PROJECTS_SEARCH_CRITERIA, CLEAR_PROJECT_SUGGESTIONS_SEARCH, PROJECT_SUGGESTIONS_SEARCH_SUCCESS, SET_PROJECTS_INFINITE_AUTOLOAD, - SET_PROJECTS_LIST_VIEW + SET_PROJECTS_LIST_VIEW, + PROJECT_STATUS_ACTIVE, + ROLE_TOPCODER_USER } from '../../config/constants' import { getProjects } from '../../api/projects' import { loadMembers } from '../../actions/members' @@ -12,6 +14,7 @@ import { loadMembers } from '../../actions/members' // ignore action /*eslint-disable no-unused-vars */ const getProjectsWithMembers = (dispatch, getState, criteria, pageNum) => { + const state = getState() return new Promise((resolve, reject) => { dispatch({ type: SET_PROJECTS_SEARCH_CRITERIA, @@ -21,7 +24,26 @@ const getProjectsWithMembers = (dispatch, getState, criteria, pageNum) => { return dispatch({ type: GET_PROJECTS, - payload: getProjects(criteria, pageNum), + payload: getProjects(criteria, pageNum) + .then((originalData) => { + const retryForCustomer = criteria.status === PROJECT_STATUS_ACTIVE && state.loadUser.user.roles && state.loadUser.user.roles.length === 1 + && state.loadUser.user.roles[0] === ROLE_TOPCODER_USER + if(originalData.totalCount === 0 && retryForCustomer) { + //retrying for customer if active projects are 0 but there are some projects with other status + //This is to bypass the walkthrough page which we ideally show for customer with zero projects + const newCriteria = { + sort: 'updatedAt desc' + } + return getProjects(newCriteria, pageNum) + .then((allProjectsData) => { + //add allprojects count to be updated to redux store + originalData.allProjectsCount = allProjectsData.totalCount + return originalData + }) + } else { + return originalData + } + }), meta: { // keep previous to enable the loading without paginator (infinite scroll) keepPrevious : pageNum !== 1 diff --git a/src/projects/list/components/Projects/Projects.jsx b/src/projects/list/components/Projects/Projects.jsx index 853603993..ab21b37b8 100755 --- a/src/projects/list/components/Projects/Projects.jsx +++ b/src/projects/list/components/Projects/Projects.jsx @@ -189,12 +189,11 @@ class Projects extends Component { } render() { - const { isPowerUser, isCustomer, isLoading, totalCount, criteria, projectsListView, setProjectsListView, setInfiniteAutoload, loadProjects, history, orgConfig } = this.props + const { isPowerUser, isCustomer, isLoading, totalCount, criteria, projectsListView, setProjectsListView, setInfiniteAutoload, loadProjects, history, orgConfig, allProjectsCount } = this.props // show walk through if user is customer and no projects were returned // for default filters - const showWalkThrough = !isLoading && totalCount === 0 && - _.isEqual(criteria, PROJECT_LIST_DEFAULT_CRITERIA) && - !isPowerUser + const showWalkThrough = !isLoading && !isPowerUser && totalCount === 0 && allProjectsCount === 0 && + _.isEqual(criteria, PROJECT_LIST_DEFAULT_CRITERIA) const getStatusCriteriaText = (criteria) => { return (_.find(PROJECT_STATUS, { value: criteria.status }) || { name: ''}).name } @@ -287,6 +286,7 @@ const mapStateToProps = ({ projectSearch, members, loadUser, projectState, templ projects : projectSearch.projects, members : members.members, totalCount : projectSearch.totalCount, + allProjectsCount: projectSearch.allProjectsCount, pageNum : projectSearch.pageNum, criteria : projectSearch.criteria, infiniteAutoload: projectSearch.infiniteAutoload, diff --git a/src/projects/reducers/projectSearch.js b/src/projects/reducers/projectSearch.js index 2c0324038..dd46414bb 100644 --- a/src/projects/reducers/projectSearch.js +++ b/src/projects/reducers/projectSearch.js @@ -15,6 +15,7 @@ export const initialState = { projects: [], error: false, totalCount: 0, + allProjectsCount: 0, pageNum: 1, // make a copy of constant to avoid unintentional modifications criteria: {...PROJECT_LIST_DEFAULT_CRITERIA}, @@ -53,8 +54,8 @@ export default function(state = initialState, action) { }) case GET_PROJECTS_SUCCESS: { const updatedProjects = action.meta.keepPrevious - ? { projects : { $push : action.payload.projects }, totalCount: { $set : action.payload.totalCount} } - : { projects : { $set : action.payload.projects }, totalCount: { $set : action.payload.totalCount} } + ? { projects : { $push : action.payload.projects }, totalCount: { $set : action.payload.totalCount}, allProjectsCount: { $set : action.payload.allProjectsCount} } + : { projects : { $set : action.payload.projects }, totalCount: { $set : action.payload.totalCount}, allProjectsCount: { $set : action.payload.allProjectsCount} } return update(state, updatedProjects) }