Skip to content

Commit 8ccc88b

Browse files
author
vikasrohit
authored
Merge pull request #2731 from appirio-tech/hotfix/always_enable_add_member_button_for_admins
Hotfix/always enable add member button for admins
2 parents fb66754 + b107845 commit 8ccc88b

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

src/components/TeamManagement/AddTeamMember.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ AddTeamMember.propTypes = {
8181
selectedNewMember: PropTypes.object,
8282
onToggleAddTeamMember: PropTypes.func.isRequired,
8383
onKeywordChange: PropTypes.func.isRequired,
84+
onKeywordPaste: PropTypes.func.isRequired,
8485
onAddNewMember: PropTypes.func.isRequired
8586
}
8687

src/components/TeamManagement/AutoCompleteInput.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ class AutoCompleteInput extends React.Component {
3333

3434
render() {
3535
const {
36-
isPopupVisible, searchMembers, keyword, onKeywordChange, onSelectNewMember, onToggleSearchPopup, selectedNewMember
36+
isPopupVisible, searchMembers, keyword, onKeywordChange, onSelectNewMember, onToggleSearchPopup,
37+
selectedNewMember, onKeywordPaste
3738
} = this.props
3839

3940
const renderMember = (member, i) => {
@@ -54,6 +55,11 @@ class AutoCompleteInput extends React.Component {
5455
)
5556
}
5657
const _onKeywordChange = e => onKeywordChange(e.target.value)
58+
const _onKeywordPaste = e => {
59+
e.stopPropagation()
60+
e.preventDefault()
61+
return onKeywordPaste(e.clipboardData.getData('Text'))
62+
}
5763
const _onToggleSearchPopup = () => onToggleSearchPopup(true)
5864
return (
5965
<div className="input-icon-group tc-file-field__inputs">
@@ -77,6 +83,7 @@ class AutoCompleteInput extends React.Component {
7783
className="tc-file-field__inputs"
7884
type="text"
7985
placeholder="username"
86+
onPaste={_onKeywordPaste}
8087
onChange={_onKeywordChange}
8188
onClick={_onToggleSearchPopup}
8289
onKeyUp={_onToggleSearchPopup}

src/projects/actions/projectMember.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { addProjectMember as addMember,
33
updateProjectMember as updateMember,
44
loadMemberSuggestions as loadMemberSuggestionsAPI
55
} from '../../api/projectMembers'
6+
import { getUserProfile } from '../../api/users'
67
import { loadMembers } from '../../actions/members'
78

89
import {ADD_PROJECT_MEMBER, REMOVE_PROJECT_MEMBER, UPDATE_PROJECT_MEMBER,
@@ -19,6 +20,20 @@ export function loadMemberSuggestions(value) {
1920
}
2021
}
2122

23+
export function loadMemberProfileForSuggestions(value) {
24+
return (dispatch) => {
25+
return dispatch({
26+
type: LOAD_MEMBER_SUGGESTIONS,
27+
payload: getUserProfile(value).then((member) => {
28+
if (member) {
29+
return [member]
30+
}
31+
return []
32+
}).catch(() => loadMemberSuggestionsAPI(value))
33+
})
34+
}
35+
}
36+
2237
function addProjectMemberWithData(dispatch, projectId, member) {
2338
return new Promise((resolve, reject) => {
2439
return dispatch({

src/projects/detail/containers/TeamManagementContainer.jsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from '../../../config/constants'
1111
import TeamManagement from '../../../components/TeamManagement/TeamManagement'
1212
import { addProjectMember, updateProjectMember, removeProjectMember,
13-
loadMemberSuggestions
13+
loadMemberSuggestions, loadMemberProfileForSuggestions
1414
} from '../../actions/projectMember'
1515

1616

@@ -19,6 +19,7 @@ class TeamManagementContainer extends Component {
1919
constructor(props) {
2020
super(props)
2121
this.onKeywordChange = this.onKeywordChange.bind(this)
22+
this.onKeywordPaste = this.onKeywordPaste.bind(this)
2223
this.onSelectNewMember = this.onSelectNewMember.bind(this)
2324
this.onAddNewMember = this.onAddNewMember.bind(this)
2425
this.onToggleAddTeamMember = this.onToggleAddTeamMember.bind(this)
@@ -114,6 +115,13 @@ class TeamManagementContainer extends Component {
114115
this.setState({ keyword, selectedNewMember: null })
115116
}
116117

118+
onKeywordPaste(keyword) {
119+
if (keyword && keyword.length > AUTOCOMPLETE_TRIGGER_LENGTH) {
120+
this.props.loadMemberProfileForSuggestions(keyword)
121+
this.setState({ keyword, selectedNewMember: null })
122+
}
123+
}
124+
117125
onSelectNewMember(selectedNewMember) {
118126
const keyword = selectedNewMember ? selectedNewMember.handle : ''
119127
const { members } = this.props
@@ -208,6 +216,7 @@ class TeamManagementContainer extends Component {
208216
currentUser={this.props.currentUser}
209217
members={projectMembers}
210218
onKeywordChange={this.onKeywordChange}
219+
onKeywordPaste={this.onKeywordPaste}
211220
onSelectNewMember={this.onSelectNewMember}
212221
onAddNewMember={this.onAddNewMember}
213222
onToggleNewMemberConfirm={ this.onToggleNewMemberConfirm }
@@ -242,7 +251,8 @@ const mapDispatchToProps = {
242251
addProjectMember,
243252
removeProjectMember,
244253
updateProjectMember,
245-
loadMemberSuggestions
254+
loadMemberSuggestions,
255+
loadMemberProfileForSuggestions,
246256
}
247257

248258
TeamManagementContainer.propTypes = {

0 commit comments

Comments
 (0)