import {ReactNode} from 'react'; import { ListItemAvatar, ListItemIcon, ListItemText, Chip, Box, Typography, Icon, useTheme, } from '@mui/material'; import {useTranslation} from 'next-i18next'; import useProfile from '../../hooks/useProfile'; import {PassengerEntity} from '../../generated/graphql'; import usePermissions from '../../hooks/usePermissions'; interface Props { passenger?: PassengerEntity; isTravel?: boolean; Actions?: (props: {passenger: PassengerEntity}) => ReactNode; } const Passenger = (props: Props) => { const {passenger, isTravel, Actions} = props; const theme = useTheme(); const {t} = useTranslation(); const { userPermissions: {canSeeFullName}, } = usePermissions(); const {userId} = useProfile(); const isUser = `${userId}` === passenger?.attributes.user?.data?.id; if (passenger) { return ( person_outlined {getPassengerName(passenger, canSeeFullName() || isUser)} {isUser && ( )} {!isTravel && ( {passenger.attributes.location} )} } /> ); } else { return ( <> person ); } }; const getPassengerName = ( passenger: PassengerEntity, canSeeFullName: boolean ) => { const hideName = (name: string) => (canSeeFullName ? name : `${name[0]}.`); if (passenger.attributes.name && passenger.attributes.lastname) return `${passenger.attributes.name} ${hideName( passenger.attributes.lastname )}`; const linkedUser = passenger.attributes?.user?.data?.attributes; if (linkedUser?.firstName && linkedUser?.lastName) return `${linkedUser.firstName} ${hideName(linkedUser.lastName)}`; return passenger.attributes.name; }; export default Passenger;