diff --git a/app/client/src/constants/ReduxActionConstants.tsx b/app/client/src/constants/ReduxActionConstants.tsx index f5334bd03c..df62ff7e69 100644 --- a/app/client/src/constants/ReduxActionConstants.tsx +++ b/app/client/src/constants/ReduxActionConstants.tsx @@ -326,6 +326,7 @@ export const ReduxActionTypes = { FETCH_APPLICATION_SUCCESS: "FETCH_APPLICATION_SUCCESS", CREATE_APPLICATION_INIT: "CREATE_APPLICATION_INIT", CREATE_APPLICATION_SUCCESS: "CREATE_APPLICATION_SUCCESS", + INVITED_USERS_TO_ORGANIZATION: "INVITED_USERS_TO_ORGANIZATION", UPDATE_WIDGET_PROPERTY_VALIDATION: "UPDATE_WIDGET_PROPERTY_VALIDATION", HIDE_PROPERTY_PANE: "HIDE_PROPERTY_PANE", INIT_DATASOURCE_PANE: "INIT_DATASOURCE_PANE", diff --git a/app/client/src/constants/orgConstants.ts b/app/client/src/constants/orgConstants.ts index 93402a4662..0d01a46de6 100644 --- a/app/client/src/constants/orgConstants.ts +++ b/app/client/src/constants/orgConstants.ts @@ -28,4 +28,5 @@ export type OrgUser = { export type Organization = { applications: ApplicationPayload[]; organization: Org; + userRoles: OrgUser[]; }; diff --git a/app/client/src/pages/Applications/index.tsx b/app/client/src/pages/Applications/index.tsx index 00ba6a6257..6a92d83ec8 100644 --- a/app/client/src/pages/Applications/index.tsx +++ b/app/client/src/pages/Applications/index.tsx @@ -661,7 +661,7 @@ function ApplicationsSection(props: any) { } else { organizationsListComponent = updatedOrgs.map( (organizationObject: any, index: number) => { - const { applications, organization, userRoles } = organizationObject; + const { applications, organization } = organizationObject; const hasManageOrgPermissions = isPermitted( organization.userPermissions, PERMISSION_TYPE.MANAGE_ORGANIZATION, @@ -700,7 +700,7 @@ function ApplicationsSection(props: any) { ) && !isFetchingApplications && ( - + (); + const userOrgs = useSelector(getUserApplicationsOrgsList); + const allUsers = useMemo(() => { + const org: any = userOrgs.find((organizationObject: any) => { + const { organization } = organizationObject; + return organization.id === props.orgId; + }); + const { userRoles } = org; + return userRoles || []; + }, [userOrgs]); return ( - {userRoles.slice(0, 5).map((el: UserRoles) => ( + {allUsers.slice(0, 5).map((el: OrgUser) => ( ))} - {userRoles.length > 5 ? ( + {allUsers.length > 5 ? ( - {userRoles.slice(5).map((el) => ( + {allUsers.slice(5).map((el: OrgUser) => ( , + ) => { + const _organizations = state.userOrgs.map((org: Organization) => { + if (org.organization.id === action.payload.orgId) { + const userRoles = org.userRoles; + org.userRoles = [...userRoles, ...action.payload.users]; + return { + ...org, + }; + } + return org; + }); + + return { + ...state, + userOrgs: _organizations, + }; + }, [ReduxActionErrorTypes.CREATE_APPLICATION_ERROR]: ( state: ApplicationsReduxState, action: ReduxAction<{ orgId: string }>, diff --git a/app/client/src/sagas/userSagas.tsx b/app/client/src/sagas/userSagas.tsx index 6e07eed29e..c154c0ed16 100644 --- a/app/client/src/sagas/userSagas.tsx +++ b/app/client/src/sagas/userSagas.tsx @@ -293,6 +293,16 @@ export function* inviteUsers( orgId: data.orgId, }, }); + yield put({ + type: ReduxActionTypes.INVITED_USERS_TO_ORGANIZATION, + payload: { + orgId: data.orgId, + users: data.usernames.map((name: string) => ({ + username: name, + roleName: data.roleName, + })), + }, + }); yield call(resolve); yield put(reset(INVITE_USERS_TO_ORG_FORM)); } catch (error) {