diff --git a/app/client/src/api/UserApi.tsx b/app/client/src/api/UserApi.tsx index eb7baea265..6e6810e9eb 100644 --- a/app/client/src/api/UserApi.tsx +++ b/app/client/src/api/UserApi.tsx @@ -100,7 +100,6 @@ class UserApi extends Api { } static inviteUser(request: InviteUserRequest): AxiosPromise { - request.status = "INVITED"; return Api.post(UserApi.inviteUserURL, request); } diff --git a/app/client/src/pages/organization/helpers.ts b/app/client/src/pages/organization/helpers.ts index ade043c7ae..aab530d1cd 100644 --- a/app/client/src/pages/organization/helpers.ts +++ b/app/client/src/pages/organization/helpers.ts @@ -56,7 +56,7 @@ export const inviteUsersToOrgSubmitHandler = ( export const inviteUsersToOrg = (values: any, dispatch: any): Promise => { const data = { roleName: values.role, - emails: values.users ? values.users.split(",") : [], + usernames: values.users ? values.users.split(",") : [], orgId: values.orgId, }; return new Promise((resolve, reject) => { diff --git a/app/client/src/reducers/uiReducers/orgReducer.ts b/app/client/src/reducers/uiReducers/orgReducer.ts index 1b832b5104..63ae508c1d 100644 --- a/app/client/src/reducers/uiReducers/orgReducer.ts +++ b/app/client/src/reducers/uiReducers/orgReducer.ts @@ -72,6 +72,13 @@ const orgReducer = createReducer(initialState, { isFetchAllUsers: false, }, }), + [ReduxActionTypes.INVITE_USERS_TO_ORG_SUCCESS]: ( + state: OrgReduxState, + action: ReduxAction, + ) => ({ + ...state, + orgUsers: [...state.orgUsers, ...action.payload], + }), [ReduxActionTypes.FETCH_ALL_ROLES_SUCCESS]: ( state: OrgReduxState, action: ReduxAction, diff --git a/app/client/src/sagas/userSagas.tsx b/app/client/src/sagas/userSagas.tsx index 8638b46cb3..d2718be1fb 100644 --- a/app/client/src/sagas/userSagas.tsx +++ b/app/client/src/sagas/userSagas.tsx @@ -210,34 +210,25 @@ export function* inviteUser( export function* inviteUsers( action: ReduxActionWithPromise<{ - data: { emails: string[]; orgId: string; roleName: string }; + data: { usernames: string[]; orgId: string; roleName: string }; }>, ) { const { data, resolve, reject } = action.payload; try { - const sagasToCall: any[] = []; - - data.emails.forEach((email: string) => { - sagasToCall.push( - call( - inviteUser, - { email, orgId: data.orgId, roleName: data.roleName }, - reject, - ), - ); + const response: ApiResponse = yield callAPI(UserApi.inviteUser, { + usernames: data.usernames, + orgId: data.orgId, + roleName: data.roleName, }); - yield all(sagasToCall); + const isValidResponse = yield validateResponse(response); + if (!isValidResponse) { + let errorMessage = `${data.usernames}: `; + errorMessage += getResponseErrorMessage(response); + yield call(reject, { _error: errorMessage }); + } yield put({ type: ReduxActionTypes.INVITE_USERS_TO_ORG_SUCCESS, - payload: { - inviteCount: sagasToCall.length, - }, - }); - yield put({ - type: ReduxActionTypes.FETCH_ALL_USERS_INIT, - payload: { - orgId: data.orgId, - }, + payload: response.data, }); yield call(resolve); yield put(reset(INVITE_USERS_TO_ORG_FORM));