Skip to content

Commit 011b0e5

Browse files
author
vikasrohit
authored
Merge pull request #494 from appirio-tech/feature/confirmation-before-owner-addition
Feature/confirmation before owner addition
2 parents d15f21b + a3df16a commit 011b0e5

File tree

4 files changed

+56
-7
lines changed

4 files changed

+56
-7
lines changed

src/components/TeamManagement/AddTeamMember.jsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ import React, {PropTypes} from 'react'
22
import AutoCompleteInput from './AutoCompleteInput'
33
import cn from 'classnames'
44
import { Icons } from 'appirio-tech-react-components'
5+
import { PROJECT_ROLE_CUSTOMER } from '../../config/constants'
56

67

78
const { XMarkIcon } = Icons
89

910
const AddTeamMember = (props) => {
1011
const {
1112
isAddingTeamMember, onAddNewMember, onToggleAddTeamMember, onKeywordChange, selectedNewMember, error,
12-
filterType, currentUser, onFilterTypeChange
13+
filterType, currentUser, onFilterTypeChange, onToggleNewMemberConfirm, owner
1314
} = props
1415
const onTypeChangeCustomer = () => onFilterTypeChange('customer')
1516
const onTypeChangeCopilot = () => onFilterTypeChange('copilot')
@@ -18,6 +19,11 @@ const AddTeamMember = (props) => {
1819
onToggleAddTeamMember(false)
1920
}
2021
const onConfirmAddMember = () => {
22+
// if adding a customer and there is no owner yet for the project
23+
if(filterType === PROJECT_ROLE_CUSTOMER && !owner) {
24+
onToggleNewMemberConfirm(true)
25+
return
26+
}
2127
onAddNewMember()
2228
onToggleAddTeamMember(false)
2329
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React, {PropTypes} from 'react'
2+
3+
const NewMemberConfirmModal = ({ onCancel, onConfirm }) => {
4+
return (
5+
<div className="modal">
6+
<div className="modal-title danger">
7+
You are about to change the owner
8+
</div>
9+
<div className="modal-body">
10+
<p className="message">
11+
You are adding a customer to the team which would make them owner. This can not be undone by you later.
12+
</p>
13+
<div className="button-area flex center">
14+
<button className="tc-btn tc-btn-default tc-btn-sm btn-cancel" onClick={onCancel}>Cancel</button>
15+
<button className="tc-btn tc-btn-warning tc-btn-sm" onClick={onConfirm}>Add Owner</button>
16+
</div>
17+
</div>
18+
</div>
19+
)
20+
}
21+
22+
NewMemberConfirmModal.propTypes = {
23+
onCancel: PropTypes.func.isRequired,
24+
onConfirm: PropTypes.func.isRequired
25+
}
26+
27+
export default NewMemberConfirmModal

src/components/TeamManagement/TeamManagement.jsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Panel from '../Panel/Panel'
88
import DeleteModal from './DeleteModal'
99
import OwnerModal from './OwnerModal'
1010
import AddTeamMember from './AddTeamMember'
11+
import NewMemberConfirmModal from './NewMemberConfirmModal'
1112
import Join from './Join'
1213
import { PROJECT_ROLE_MANAGER, PROJECT_ROLE_CUSTOMER } from '../../config/constants'
1314
const userShape = PropTypes.shape({
@@ -37,18 +38,26 @@ const calcMemberPriority = m => {
3738
const TeamManagement = (props) => {
3839
const {
3940
currentUser, members, deletingMember, isAddingTeamMember, onMemberDeleteConfirm, onMemberDelete, isShowJoin,
40-
newOwner, onChangeOwner, onChangeOwnerConfirm, onToggleAddTeamMember
41+
newOwner, onChangeOwner, onChangeOwnerConfirm, onToggleAddTeamMember, showNewMemberConfirmation, onAddNewMember,
42+
onToggleNewMemberConfirm, onKeywordChange
4143
} = props
4244
const currentMember = members.filter((member) => member.userId === currentUser.userId)[0]
4345
const owner = members.filter((member) => member.isPrimary && member.isCustomer)[0]
44-
const modalActive = isAddingTeamMember || deletingMember || isShowJoin
46+
const modalActive = isAddingTeamMember || deletingMember || isShowJoin || showNewMemberConfirmation
4547
const canJoin = !currentMember && (currentUser.isCopilot || currentUser.isManager)
4648

4749
const sortedMembers = _.sortBy(members, [(member) => {
4850
return calcMemberPriority(member)
4951
}])
5052

51-
53+
const _onAddNewMember = () => {
54+
onToggleNewMemberConfirm(false)
55+
onAddNewMember()
56+
}
57+
const _onAddMemberCancel = () => {
58+
onKeywordChange('')
59+
onToggleNewMemberConfirm(false)
60+
}
5261
return (
5362
<div className="team-management">
5463
<Panel className={cn({'modal-active': modalActive})}>
@@ -105,7 +114,9 @@ const TeamManagement = (props) => {
105114
})}
106115

107116
{canJoin && <Join {...props} isCopilot={currentUser.isCopilot} owner={owner} />}
108-
{currentMember && <AddTeamMember {...props} />}
117+
{currentMember && <AddTeamMember {...props} owner={owner} />}
118+
119+
{ showNewMemberConfirmation && <NewMemberConfirmModal onConfirm={ _onAddNewMember } onCancel={ _onAddMemberCancel } />}
109120
</Panel>
110121
</div>
111122
)

src/projects/detail/containers/TeamManagementContainer.jsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class TeamManagementContainer extends Component {
2424
this.onJoinConfirm = this.onJoinConfirm.bind(this)
2525
this.onChangeOwnerConfirm = this.onChangeOwnerConfirm.bind(this)
2626
this.onFilterTypeChange = this.onFilterTypeChange.bind(this)
27+
this.onToggleNewMemberConfirm = this.onToggleNewMemberConfirm.bind(this)
2728
}
2829

2930
componentWillMount() {
@@ -121,11 +122,14 @@ class TeamManagementContainer extends Component {
121122
keyword: '',
122123
selectedNewMember: null
123124
})
124-
125125
}
126126

127127
onToggleAddTeamMember(isAddingTeamMember) {
128-
this.setState({isAddingTeamMember, error : null})
128+
this.setState({ isAddingTeamMember, error : null })
129+
}
130+
131+
onToggleNewMemberConfirm(showNewMemberConfirmation) {
132+
this.setState({ showNewMemberConfirmation, isAddingTeamMember : false })
129133
}
130134

131135
onMemberDeleteConfirm(member) {
@@ -188,6 +192,7 @@ class TeamManagementContainer extends Component {
188192
onKeywordChange={this.onKeywordChange}
189193
onSelectNewMember={this.onSelectNewMember}
190194
onAddNewMember={this.onAddNewMember}
195+
onToggleNewMemberConfirm={ this.onToggleNewMemberConfirm }
191196
onToggleAddTeamMember={this.onToggleAddTeamMember}
192197
onMemberDeleteConfirm={this.onMemberDeleteConfirm}
193198
onJoinConfirm={this.onJoinConfirm}

0 commit comments

Comments
 (0)