Skip to content

Commit a800de6

Browse files
committed
Merge branch 'dev' into cf15
# Conflicts: # src/projects/actions/projectMember.js
2 parents a3a3ab7 + 8a6d891 commit a800de6

File tree

8 files changed

+53
-21
lines changed

8 files changed

+53
-21
lines changed

src/api/projects.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export function getProjectById(projectId) {
5656
_.forEach(res.attachments, a => {
5757
a.downloadUrl = `/projects/${projectId}/attachments/${a.id}`
5858
})
59+
if (!res.invites) res.invites = []
5960
return res
6061
})
6162
}

src/components/TopBar/TopBarContainer.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
DOMAIN
1515
} from '../../config/constants'
1616
import ConnectLogoMono from '../../assets/icons/connect-logo-mono.svg'
17+
import { getAvatarResized } from '../../helpers/tcHelpers.js'
1718
require('./TopBarContainer.scss')
1819

1920

@@ -61,9 +62,9 @@ class TopBarContainer extends React.Component {
6162
)
6263
}
6364
const { user, toolbar, userRoles, isPowerUser } = this.props
64-
6565
const userHandle = _.get(user, 'handle')
66-
const userImage = _.get(user, 'photoURL')
66+
const bigPhotoURL = _.get(user, 'photoURL')
67+
const userImage = getAvatarResized(bigPhotoURL, 40)
6768
const userFirstName = _.get(user, 'firstName')
6869
const userLastName = _.get(user, 'lastName')
6970
let userName = userFirstName

src/config/constants.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,11 @@ export const ACCEPT_OR_REFUSE_INVITE_PENDING = 'ACCEPT_OR_REFUSE_INVITE_PENDING'
347347
export const ACCEPT_OR_REFUSE_INVITE_FAILURE = 'ACCEPT_OR_REFUSE_INVITE_FAILURE'
348348
export const ACCEPT_OR_REFUSE_INVITE_SUCCESS = 'ACCEPT_OR_REFUSE_INVITE_SUCCESS'
349349

350+
export const RELOAD_PROJECT_MEMBERS = 'RELOAD_PROJECT_MEMBERS'
351+
export const RELOAD_PROJECT_MEMBERS_PENDING = 'RELOAD_PROJECT_MEMBERS_PENDING'
352+
export const RELOAD_PROJECT_MEMBERS_FAILURE = 'RELOAD_PROJECT_MEMBERS_FAILURE'
353+
export const RELOAD_PROJECT_MEMBERS_SUCCESS = 'RELOAD_PROJECT_MEMBERS_SUCCESS'
354+
350355
export const ADD_PROJECT_MEMBERS = 'ADD_PROJECT_MEMBERS'
351356
export const ADD_PROJECT_MEMBERS_PENDING = 'ADD_PROJECT_MEMBERS_PENDING'
352357
export const ADD_PROJECT_MEMBERS_SUCCESS = 'ADD_PROJECT_MEMBERS_SUCCESS'
@@ -530,6 +535,9 @@ export const PROJECT_MEMBER_INVITE_STATUS_REFUSED = 'refused'
530535
export const PROJECT_MEMBER_INVITE_STATUS_CANCELED = 'canceled'
531536
export const PROJECT_MEMBER_INVITE_STATUS_PENDING = 'pending'
532537
export const PROJECT_MEMBER_INVITE_STATUS_REQUESTED = 'requested'
538+
export const PROJECT_MEMBER_INVITE_STATUS_REQUEST_APPROVED = 'request_approved'
539+
export const PROJECT_MEMBER_INVITE_STATUS_REQUEST_REJECTED = 'request_rejected'
540+
533541

534542
// projects list view types
535543
export const PROJECTS_LIST_VIEW = {
@@ -786,7 +794,7 @@ export const EVENT_TYPE = {
786794
ASSIGNED_AS_OWNER: 'notifications.connect.project.member.assignedAsOwner',
787795
INVITE_REQUESTED: 'notifications.connect.project.member.invite.requested',
788796
INVITE_APPROVED: 'notifications.connect.project.member.invite.approved',
789-
INVITE_REFUSED: 'notifications.connect.project.member.invite.refused',
797+
INVITE_REFUSED: 'notifications.connect.project.member.invite.rejected',
790798
},
791799
PROJECT: {
792800
ACTIVE: 'notifications.connect.project.active',

src/projects/actions/projectMember.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { addProjectMember as addMember,
66
import { createProjectMemberInvite as createProjectMemberInvite,
77
updateProjectMemberInvite as updateProjectMemberInvite
88
} from '../../api/projectMemberInvites'
9-
import { loadProjectDashboard } from './projectDashboard'
9+
import { getProjectById } from '../../api/projects'
1010
import { loadMembers, loadMembersByHandle } from '../../actions/members'
1111

1212
import {ADD_PROJECT_MEMBER, REMOVE_PROJECT_MEMBER, UPDATE_PROJECT_MEMBER,
@@ -18,6 +18,7 @@ import {ADD_PROJECT_MEMBER, REMOVE_PROJECT_MEMBER, UPDATE_PROJECT_MEMBER,
1818
ACCEPT_OR_REFUSE_INVITE,
1919
PROJECT_ROLE_CUSTOMER,
2020
PROJECT_MEMBER_INVITE_STATUS_CANCELED,
21+
RELOAD_PROJECT_MEMBERS,
2122
CLEAR_MEMBER_SUGGESTIONS
2223
} from '../../config/constants'
2324

@@ -157,22 +158,20 @@ export function inviteProjectMembers(projectId, emailIds, handles) {
157158
}
158159
}
159160

160-
161-
function acceptOrRefuseInviteWithData(dispatch, projectId, item) {
162-
return new Promise((resolve, reject) => {
163-
return updateProjectMemberInvite(projectId, item)
164-
.then(() => {
165-
return dispatch(loadProjectDashboard(projectId))
166-
})
167-
.catch(err => reject(err))
168-
})
169-
}
170-
171161
export function acceptOrRefuseInvite(projectId, item) {
172162
return (dispatch) => {
173163
return dispatch({
174164
type: ACCEPT_OR_REFUSE_INVITE,
175-
payload: acceptOrRefuseInviteWithData(dispatch, projectId, item)
165+
payload: updateProjectMemberInvite(projectId, item)
166+
})
167+
}
168+
}
169+
170+
export function reloadProjectMembers(projectId) {
171+
return (dispatch) => {
172+
return dispatch({
173+
type: RELOAD_PROJECT_MEMBERS,
174+
payload: getProjectById(projectId)
176175
})
177176
}
178177
}

src/projects/detail/containers/TeamManagementContainer.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import TeamManagement from '../../../components/TeamManagement/TeamManagement'
1919
import {
2020
acceptOrRefuseInvite,
21+
reloadProjectMembers,
2122
addProjectMember,
2223
deleteProjectInvite,
2324
deleteTopcoderMemberInvite,
@@ -103,6 +104,7 @@ class TeamManagementContainer extends Component {
103104

104105
onAcceptOrRefuse(invite) {
105106
this.props.acceptOrRefuseInvite(this.props.projectId, invite)
107+
.then(() => this.props.reloadProjectMembers(this.props.projectId))
106108
}
107109

108110
changeRole(memberId, item) {
@@ -243,6 +245,7 @@ const mapDispatchToProps = {
243245
inviteTopcoderMembers,
244246
deleteTopcoderMemberInvite,
245247
acceptOrRefuseInvite,
248+
reloadProjectMembers,
246249
}
247250

248251
TeamManagementContainer.propTypes = {

src/projects/reducers/project.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
INVITE_TOPCODER_MEMBER_SUCCESS, REMOVE_TOPCODER_MEMBER_INVITE_SUCCESS, INVITE_TOPCODER_MEMBER_PENDING, REMOVE_CUSTOMER_INVITE_PENDING,
2020
REMOVE_TOPCODER_MEMBER_INVITE_PENDING, REMOVE_TOPCODER_MEMBER_INVITE_FAILURE, REMOVE_CUSTOMER_INVITE_FAILURE,
2121
INVITE_CUSTOMER_FAILURE, INVITE_TOPCODER_MEMBER_FAILURE, INVITE_CUSTOMER_PENDING,
22-
ACCEPT_OR_REFUSE_INVITE_SUCCESS, ACCEPT_OR_REFUSE_INVITE_FAILURE, ACCEPT_OR_REFUSE_INVITE_PENDING,
22+
ACCEPT_OR_REFUSE_INVITE_SUCCESS, ACCEPT_OR_REFUSE_INVITE_FAILURE, ACCEPT_OR_REFUSE_INVITE_PENDING, RELOAD_PROJECT_MEMBERS_SUCCESS,
2323
UPLOAD_PROJECT_ATTACHMENT_FILES, DISCARD_PROJECT_ATTACHMENT, CHANGE_ATTACHMENT_PERMISSION
2424
} from '../../config/constants'
2525
import _ from 'lodash'
@@ -182,7 +182,17 @@ export const projectState = function (state=initialState, action) {
182182

183183
case ACCEPT_OR_REFUSE_INVITE_SUCCESS: {
184184
return Object.assign({}, state, {
185-
showUserInvited: false
185+
showUserInvited: false,
186+
})
187+
}
188+
189+
case RELOAD_PROJECT_MEMBERS_SUCCESS: {
190+
return Object.assign({}, state, {
191+
project:{
192+
...state.project,
193+
members: action.payload.members,
194+
invites: action.payload.invites,
195+
}
186196
})
187197
}
188198

src/reducers/alerts.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import {
2424
REMOVE_CUSTOMER_INVITE_FAILURE, REMOVE_CUSTOMER_INVITE_SUCCESS,
2525
// accepted or refused invite
2626
ACCEPT_OR_REFUSE_INVITE_SUCCESS, ACCEPT_OR_REFUSE_INVITE_FAILURE,
27+
PROJECT_MEMBER_INVITE_STATUS_ACCEPTED, PROJECT_MEMBER_INVITE_STATUS_REFUSED,
28+
PROJECT_MEMBER_INVITE_STATUS_REQUEST_APPROVED, PROJECT_MEMBER_INVITE_STATUS_REQUEST_REJECTED,
2729
// project feeds
2830
CREATE_PROJECT_FEED_FAILURE,
2931
CREATE_PROJECT_FEED_COMMENT_FAILURE,
@@ -159,7 +161,15 @@ export default function(state = {}, action) {
159161
return state
160162

161163
case ACCEPT_OR_REFUSE_INVITE_SUCCESS:
162-
Alert.success('You\'ve successfully joined the project.')
164+
if (action.payload.status===PROJECT_MEMBER_INVITE_STATUS_ACCEPTED){
165+
Alert.success('You\'ve successfully joined the project.')
166+
} else if (action.payload.status===PROJECT_MEMBER_INVITE_STATUS_REFUSED){
167+
Alert.success('You\'ve refused to join the project.')
168+
} else if (action.payload.status===PROJECT_MEMBER_INVITE_STATUS_REQUEST_APPROVED){
169+
Alert.success('You\'ve approved copilot invitation request.')
170+
} else if (action.payload.status===PROJECT_MEMBER_INVITE_STATUS_REQUEST_REJECTED){
171+
Alert.success('You\'ve rejected copilot invitation request.')
172+
}
163173
return state
164174

165175
case UPDATE_PROJECT_FAILURE:

src/routes/notifications/constants/notifications.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ export const NOTIFICATIONS = [
236236
toUserHandle: true,
237237
goTo: GOTO.PROJECT_DASHBOARD
238238
}, {
239-
text: 'Your request to add invite the copilot was approved',
239+
text: 'Your request to invite the copilot was approved',
240240
originator: true,
241241
goTo: GOTO.PROJECT_DASHBOARD
242242
}]
@@ -246,7 +246,7 @@ export const NOTIFICATIONS = [
246246
eventType: EVENT_TYPE.MEMBER.INVITE_REFUSED,
247247
type: NOTIFICATION_TYPE.MEMBER_ADDED,
248248
rules: [{
249-
text: 'Your request to add invite the member was refused',
249+
text: 'Your request to invite the copilot was refused',
250250
originator: true,
251251
goTo: GOTO.PROJECT_DASHBOARD
252252
}]

0 commit comments

Comments
 (0)