Skip to content

Commit 5cba6a9

Browse files
authored
Merge pull request #2998 from appirio-tech/hotfix/bypass_walkthrough_page_for_nonzero_projects_customer
Bypassed 'Walkthrough' page when customer non-zero count of non-active projects
2 parents acaa6e1 + d08de83 commit 5cba6a9

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

src/projects/actions/loadProjects.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ import {
44
SET_SEARCH_TERM, SET_PROJECTS_SEARCH_CRITERIA,
55
CLEAR_PROJECT_SUGGESTIONS_SEARCH, PROJECT_SUGGESTIONS_SEARCH_SUCCESS,
66
SET_PROJECTS_INFINITE_AUTOLOAD,
7-
SET_PROJECTS_LIST_VIEW
7+
SET_PROJECTS_LIST_VIEW,
8+
PROJECT_STATUS_ACTIVE,
9+
ROLE_TOPCODER_USER
810
} from '../../config/constants'
911
import { getProjects } from '../../api/projects'
1012
import { loadMembers } from '../../actions/members'
1113

1214
// ignore action
1315
/*eslint-disable no-unused-vars */
1416
const getProjectsWithMembers = (dispatch, getState, criteria, pageNum) => {
17+
const state = getState()
1518
return new Promise((resolve, reject) => {
1619
dispatch({
1720
type: SET_PROJECTS_SEARCH_CRITERIA,
@@ -21,7 +24,26 @@ const getProjectsWithMembers = (dispatch, getState, criteria, pageNum) => {
2124

2225
return dispatch({
2326
type: GET_PROJECTS,
24-
payload: getProjects(criteria, pageNum),
27+
payload: getProjects(criteria, pageNum)
28+
.then((originalData) => {
29+
const retryForCustomer = criteria.status === PROJECT_STATUS_ACTIVE && state.loadUser.user.roles && state.loadUser.user.roles.length === 1
30+
&& state.loadUser.user.roles[0] === ROLE_TOPCODER_USER
31+
if(originalData.totalCount === 0 && retryForCustomer) {
32+
//retrying for customer if active projects are 0 but there are some projects with other status
33+
//This is to bypass the walkthrough page which we ideally show for customer with zero projects
34+
const newCriteria = {
35+
sort: 'updatedAt desc'
36+
}
37+
return getProjects(newCriteria, pageNum)
38+
.then((allProjectsData) => {
39+
//add allprojects count to be updated to redux store
40+
originalData.allProjectsCount = allProjectsData.totalCount
41+
return originalData
42+
})
43+
} else {
44+
return originalData
45+
}
46+
}),
2547
meta: {
2648
// keep previous to enable the loading without paginator (infinite scroll)
2749
keepPrevious : pageNum !== 1

src/projects/list/components/Projects/Projects.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,11 @@ class Projects extends Component {
189189
}
190190

191191
render() {
192-
const { isPowerUser, isCustomer, isLoading, totalCount, criteria, projectsListView, setProjectsListView, setInfiniteAutoload, loadProjects, history, orgConfig } = this.props
192+
const { isPowerUser, isCustomer, isLoading, totalCount, criteria, projectsListView, setProjectsListView, setInfiniteAutoload, loadProjects, history, orgConfig, allProjectsCount } = this.props
193193
// show walk through if user is customer and no projects were returned
194194
// for default filters
195-
const showWalkThrough = !isLoading && totalCount === 0 &&
196-
_.isEqual(criteria, PROJECT_LIST_DEFAULT_CRITERIA) &&
197-
!isPowerUser
195+
const showWalkThrough = !isLoading && !isPowerUser && totalCount === 0 && allProjectsCount === 0 &&
196+
_.isEqual(criteria, PROJECT_LIST_DEFAULT_CRITERIA)
198197
const getStatusCriteriaText = (criteria) => {
199198
return (_.find(PROJECT_STATUS, { value: criteria.status }) || { name: ''}).name
200199
}
@@ -287,6 +286,7 @@ const mapStateToProps = ({ projectSearch, members, loadUser, projectState, templ
287286
projects : projectSearch.projects,
288287
members : members.members,
289288
totalCount : projectSearch.totalCount,
289+
allProjectsCount: projectSearch.allProjectsCount,
290290
pageNum : projectSearch.pageNum,
291291
criteria : projectSearch.criteria,
292292
infiniteAutoload: projectSearch.infiniteAutoload,

src/projects/reducers/projectSearch.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const initialState = {
1515
projects: [],
1616
error: false,
1717
totalCount: 0,
18+
allProjectsCount: 0,
1819
pageNum: 1,
1920
// make a copy of constant to avoid unintentional modifications
2021
criteria: {...PROJECT_LIST_DEFAULT_CRITERIA},
@@ -53,8 +54,8 @@ export default function(state = initialState, action) {
5354
})
5455
case GET_PROJECTS_SUCCESS: {
5556
const updatedProjects = action.meta.keepPrevious
56-
? { projects : { $push : action.payload.projects }, totalCount: { $set : action.payload.totalCount} }
57-
: { projects : { $set : action.payload.projects }, totalCount: { $set : action.payload.totalCount} }
57+
? { projects : { $push : action.payload.projects }, totalCount: { $set : action.payload.totalCount}, allProjectsCount: { $set : action.payload.allProjectsCount} }
58+
: { projects : { $set : action.payload.projects }, totalCount: { $set : action.payload.totalCount}, allProjectsCount: { $set : action.payload.allProjectsCount} }
5859
return update(state, updatedProjects)
5960
}
6061

0 commit comments

Comments
 (0)