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;