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
21 changes: 20 additions & 1 deletion src/actions/members.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import _ from 'lodash'
import { LOAD_MEMBERS } from '../config/constants'
import { getMembersById } from '../api/projectMembers'
import { getMembersById, getMembersByHandle } from '../api/projectMembers'

export function loadMembers(userIds) {
return (dispatch, getState) => {
Expand All @@ -20,3 +20,22 @@ export function loadMembers(userIds) {
}
}
}

export function loadMembersByHandle(handles) {
return (dispatch, getState) => {
// check if we need to request data from server
const members = getState().members.members
// this returns ids from handles that are not in store (members)
const missingUsers = _.difference(handles, _.keys(members))
// dispatch request to load members if we are missing data
if (missingUsers.length) {
return dispatch({
type: LOAD_MEMBERS,
payload: getMembersByHandle(handles)
})
} else {
// returns empty resolved promise to avoid error when we call then on this action
return Promise.resolve({})
}
}
}
42 changes: 42 additions & 0 deletions src/api/projectMemberInvites.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { axiosInstance as axios } from './requestInterceptor'
import { PROJECTS_API_URL } from '../config/constants'

/**
* Update project member invite based on project's id & given member
* @param {integer} projectId unique identifier of the project
* @param {object} member invite to update
* @return {object} project member invite returned by api
*/
export function updateProjectMemberInvite(projectId, member) {
const url = `${PROJECTS_API_URL}/v4/projects/${projectId}/members/invite/`
return axios.put(url, { param: member})
.then(resp => {
return resp.data.result.content
})
}

/**
* Create a project member invite based on project's id & given member
* @param {integer} projectId unique identifier of the project
* @param {object} member invite
* @return {object} project member invite returned by api
*/
export function createProjectMemberInvite(projectId, member) {
const url = `${PROJECTS_API_URL}/v4/projects/${projectId}/members/invite/`
return axios.post(url, { param: member})
.then(resp => {
return resp.data.result.content
})
}

/**
* Get a project member invite based on project's id
* @param {integer} projectId unique identifier of the project
* @return {object} project member invite returned by api
*/
export function getProjectInviteById(projectId) {
return axios.get(`${PROJECTS_API_URL}/v4/projects/${projectId}/members/invite/`)
.then(resp => {
return resp.data.result.content
})
}
15 changes: 15 additions & 0 deletions src/api/projectMembers.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,21 @@ export function getMembersById (userIds) {
})
}

export function getMembersByHandle (handles) {
const _handlesArr = _.map(handles, _id => `handle:${_id}`)
// only requesting certain member attributes
const fields = 'userId,handle,photoURL,firstName,lastName,details,email'
const query = _handlesArr.join(' OR ')
const url = `${TC_API_URL}/v3/members/_search/?fields=`
+ encodeURIComponent(fields)
+ `&query=${encodeURIComponent(query)}`
+ '&limit=' + handles.length
return axios.get(url)
.then(resp => {
return resp.data.result.content
})
}

export function loadMemberSuggestions(value) {
const url = `${TC_API_URL}/v3/members/_suggest/${value}`
return axios.get(url)
Expand Down
2 changes: 1 addition & 1 deletion src/api/projects.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export function getProjectSuggestions() {


/**
* Get a project basd on it's id
* Get a project based on it's id
* @param {integer} projectId unique identifier of the project
* @return {object} project returned by api
*/
Expand Down
88 changes: 0 additions & 88 deletions src/components/TeamManagement/AddTeamMember.jsx

This file was deleted.

107 changes: 0 additions & 107 deletions src/components/TeamManagement/AutoCompleteInput.jsx

This file was deleted.

65 changes: 0 additions & 65 deletions src/components/TeamManagement/DeleteModal.jsx

This file was deleted.

Loading