Shared:Selectors:People: add support show disabled and invited users
This commit is contained in:
parent
e8aef49cf6
commit
2f133a2fe9
@ -48,10 +48,16 @@ export type PeopleSelectorProps = TSelectorHeader &
|
||||
style?: React.CSSProperties;
|
||||
|
||||
filter?: PeopleFilter | Function;
|
||||
excludeItems?: string[];
|
||||
|
||||
isMultiSelect?: boolean;
|
||||
|
||||
currentUserId: string;
|
||||
withOutCurrentAuthorizedUser?: boolean;
|
||||
withAbilityCreateRoomUsers?: boolean;
|
||||
withoutNotActivatedUsers?: boolean;
|
||||
|
||||
filterUserId?: string;
|
||||
|
||||
excludeItems?: string[];
|
||||
disableInvitedUsers?: string[];
|
||||
disableDisabledUsers?: boolean;
|
||||
};
|
||||
|
@ -40,7 +40,7 @@ import {
|
||||
TSelectorItem,
|
||||
TSelectorSearch,
|
||||
} from "../../components/selector/Selector.types";
|
||||
import { EmployeeActivationStatus, EmployeeStatus } from "../../enums";
|
||||
import { EmployeeStatus } from "../../enums";
|
||||
import { TTranslation } from "../../types";
|
||||
import { getUserRole } from "../../utils/common";
|
||||
import Filter from "../../api/people/filter";
|
||||
@ -51,7 +51,12 @@ import { AvatarRole } from "../../components/avatar";
|
||||
|
||||
import { PeopleSelectorProps } from "./PeopleSelector.types";
|
||||
|
||||
const toListItem = (item: TUser) => {
|
||||
const toListItem = (
|
||||
item: TUser,
|
||||
t: TTranslation,
|
||||
disableDisabledUsers?: boolean,
|
||||
disableInvitedUsers?: string[],
|
||||
) => {
|
||||
const {
|
||||
id: userId,
|
||||
email,
|
||||
@ -62,12 +67,22 @@ const toListItem = (item: TUser) => {
|
||||
isAdmin,
|
||||
isVisitor,
|
||||
isCollaborator,
|
||||
status,
|
||||
} = item;
|
||||
|
||||
const role = getUserRole(item);
|
||||
|
||||
const userAvatar = hasAvatar ? avatar : DefaultUserPhoto;
|
||||
|
||||
const isInvited = disableInvitedUsers?.includes(userId);
|
||||
const isDisabled = disableDisabledUsers && status === EmployeeStatus.Disabled;
|
||||
|
||||
const disabledText = isDisabled
|
||||
? t("Common:Disabled")
|
||||
: isInvited
|
||||
? t("Common:Invited")
|
||||
: "";
|
||||
|
||||
const i = {
|
||||
id: userId,
|
||||
email,
|
||||
@ -79,6 +94,8 @@ const toListItem = (item: TUser) => {
|
||||
isVisitor,
|
||||
isCollaborator,
|
||||
hasAvatar,
|
||||
isDisabled: isInvited || isDisabled,
|
||||
disabledText,
|
||||
} as TSelectorItem;
|
||||
|
||||
return i;
|
||||
@ -102,7 +119,7 @@ const PeopleSelector = ({
|
||||
excludeItems,
|
||||
currentUserId,
|
||||
withOutCurrentAuthorizedUser,
|
||||
withoutNotActivatedUsers,
|
||||
|
||||
withAbilityCreateRoomUsers,
|
||||
filterUserId,
|
||||
|
||||
@ -113,6 +130,10 @@ const PeopleSelector = ({
|
||||
|
||||
withHeader,
|
||||
headerProps,
|
||||
|
||||
disableDisabledUsers,
|
||||
disableInvitedUsers,
|
||||
isMultiSelect,
|
||||
}: PeopleSelectorProps) => {
|
||||
const { t }: { t: TTranslation } = useTranslation(["Common"]);
|
||||
|
||||
@ -179,9 +200,6 @@ const PeopleSelector = ({
|
||||
currentFilter.page = startIndex / pageCount;
|
||||
currentFilter.pageCount = pageCount;
|
||||
|
||||
if (withoutNotActivatedUsers)
|
||||
currentFilter.activationStatus = `${EmployeeActivationStatus.NotActivated}`;
|
||||
|
||||
currentFilter.search = searchValue || null;
|
||||
|
||||
const response = await getUserList(currentFilter);
|
||||
@ -191,11 +209,10 @@ const PeopleSelector = ({
|
||||
const data = response.items
|
||||
.filter((item) => {
|
||||
const excludeUser =
|
||||
(!!withAbilityCreateRoomUsers &&
|
||||
!item.isAdmin &&
|
||||
!item.isOwner &&
|
||||
!item.isRoomAdmin) ||
|
||||
item.status === EmployeeStatus.Disabled;
|
||||
withAbilityCreateRoomUsers &&
|
||||
!item.isAdmin &&
|
||||
!item.isOwner &&
|
||||
!item.isRoomAdmin;
|
||||
|
||||
if ((excludeItems && excludeItems.includes(item.id)) || excludeUser) {
|
||||
totalDifferent += 1;
|
||||
@ -203,7 +220,9 @@ const PeopleSelector = ({
|
||||
}
|
||||
return true;
|
||||
})
|
||||
.map((item) => toListItem(item));
|
||||
.map((item) =>
|
||||
toListItem(item, t, disableDisabledUsers, disableInvitedUsers),
|
||||
);
|
||||
|
||||
const newTotal = withOutCurrentAuthorizedUser
|
||||
? response.total - totalDifferent - 1
|
||||
@ -237,14 +256,16 @@ const PeopleSelector = ({
|
||||
isFirstLoad.current = false;
|
||||
},
|
||||
[
|
||||
disableDisabledUsers,
|
||||
disableInvitedUsers,
|
||||
excludeItems,
|
||||
filter,
|
||||
moveCurrentUserToTopOfList,
|
||||
removeCurrentUserFromList,
|
||||
searchValue,
|
||||
t,
|
||||
withAbilityCreateRoomUsers,
|
||||
withOutCurrentAuthorizedUser,
|
||||
withoutNotActivatedUsers,
|
||||
],
|
||||
);
|
||||
|
||||
@ -331,7 +352,7 @@ const PeopleSelector = ({
|
||||
hasNextPage={hasNextPage}
|
||||
isNextPageLoading={isNextPageLoading}
|
||||
loadNextPage={loadNextPage}
|
||||
isMultiSelect={false}
|
||||
isMultiSelect={isMultiSelect ?? false}
|
||||
totalItems={total}
|
||||
isLoading={isFirstLoad.current}
|
||||
searchLoader={<SearchLoader />}
|
||||
|
Loading…
Reference in New Issue
Block a user