Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions src/projects/actions/loadProjects.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@ 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'

// 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,
Expand All @@ -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
Expand Down
8 changes: 4 additions & 4 deletions src/projects/list/components/Projects/Projects.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -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,
Expand Down
5 changes: 3 additions & 2 deletions src/projects/reducers/projectSearch.js
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand Down Expand Up @@ -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)
}

Expand Down