All files / src/features/Permissions/ModalV2/TeamMemberPanel index.tsx

95.45% Statements 21/22
89.47% Branches 17/19
75% Functions 3/4
95.45% Lines 21/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107                                                        4x 108x 107x 107x 107x 107x       107x 107x 151x     107x   107x           107x       107x         107x         107x   107x                                           4x   89x 87x   87x     87x                    
import NiceModal from "@ebay/nice-modal-react";
import { useTeamMember } from "../hooks";
import { MemberData } from "@customTypes/team.member";
import TeamPanelBody from "../components/TeamPanelBody";
import { useMediaQuery } from "@mui/material";
import { useAppSelector } from "@redux/hooks";
import { selectUser } from "@redux/slices/auth/auth";
import { useTeamPermissions } from "features/Permissions/AccessControl/hooks";
import usePermissionsPanel from "../hooks/usePermissionsPanel";
import AddPermissionModal from "../components/AddPermissionModal/AddPermissionModal";
import { useGetFeatureFlagValues } from "FeatureFlags/useGetFeatureFlagValues";
import { checkPortals } from "@utils/routing";
import TeamMemberPanelV2 from "../TeamMemberPanelV2";
import GiveSidePanel, {
  NEW_BASE_PANEL_WIDTH,
} from "@shared/SidePanel/GiveSidePanel";
import PermissionsPanel from "@features/Permissions/ModalV2/components/PermissionsPanel/PermissionsPanel";
import { useState } from "react";
import TeamMemberPanelMixed from "../OldTeamMemberPanel";
 
type TeamMemberPanelProps = {
  rowData: MemberData;
  openPermissions?: boolean;
  isFirst?: boolean;
  isLast?: boolean;
  setSelectedRow?: (newIdx: string | number) => void;
};
 
const OldTeamMemberPanel = (props: TeamMemberPanelProps) => {
  const [isLoading, setIsLoading] = useState<boolean>(false);
  const { modal, handleClose } = useTeamMember();
  const { isListAccessPoliciesAllowed } = useTeamPermissions();
  const isDesktop = useMediaQuery("(min-width:1024px)");
  const { email } = useAppSelector(selectUser);
  const {
    rowData: { roleName, user },
    openPermissions: open,
  } = props;
  const hasNotGetPermissionsListPermission = useAppSelector(
    (state) => state.app.permissions?.["get-team-members-all-permissions"],
  );
 
  const showPermissions = roleName !== "owner" && user.email !== email;
 
  const bodyProps = {
    ...props,
    handleClose,
    showPermissions,
    isLoading,
  };
  const { handleAddPermission, onAddCustomPermission } = usePermissionsPanel(
    user.accID,
  );
 
  const onPanelClose = () => {
    handleClose();
  };
 
  const isSecondPanelOpen =
    isDesktop &&
    showPermissions &&
    isListAccessPoliciesAllowed &&
    !hasNotGetPermissionsListPermission;
 
  const modalWidth = !isSecondPanelOpen ? 500 : NEW_BASE_PANEL_WIDTH;
 
  return (
    <GiveSidePanel
      width={modalWidth}
      open={modal.visible}
      onClose={onPanelClose}
      secondPanel={
        <PermissionsPanel memberId={user.accID} setIsLoading={setIsLoading} />
      }
      isSecondPanelOpen={isSecondPanelOpen}
    >
      <TeamPanelBody {...bodyProps} />
      <AddPermissionModal
        open={open || false}
        onClose={handleClose}
        onAdd={handleAddPermission}
        onAddCustom={onAddCustomPermission}
        memberId={user.accID}
      />
    </GiveSidePanel>
  );
};
 
const TeamMemberPanel = NiceModal.create((props: TeamMemberPanelProps) => {
  const { isMerchantPermissionsRebrandingEnabled, isPermissionsTableEnabled } =
    useGetFeatureFlagValues();
  const { isAcquirerPortal, isMerchantPortal } = checkPortals();
  const isNewFlowEnabled =
    (isMerchantPortal && isMerchantPermissionsRebrandingEnabled) ||
    isPermissionsTableEnabled;
 
  return isAcquirerPortal || isNewFlowEnabled ? (
    <TeamMemberPanelV2 {...props} />
  ) : isMerchantPortal ? (
    <TeamMemberPanelMixed {...props} />
  ) : (
    <OldTeamMemberPanel {...props} />
  );
});
 
export default TeamMemberPanel;