Files
cinny/src/app/molecules/room-tile/RoomTile.jsx
T

73 lines
1.8 KiB
React
Raw Normal View History

2021-07-28 18:45:52 +05:30
import React from 'react';
import PropTypes from 'prop-types';
2021-08-31 18:43:31 +05:30
import './RoomTile.scss';
2021-07-28 18:45:52 +05:30
import Linkify from 'linkifyjs/react';
import colorMXID from '../../../util/colorMXID';
import Text from '../../atoms/text/Text';
import Avatar from '../../atoms/avatar/Avatar';
function linkifyContent(content) {
return <Linkify options={{ target: { url: '_blank' } }}>{content}</Linkify>;
}
2021-08-31 18:43:31 +05:30
function RoomTile({
2021-07-28 18:45:52 +05:30
avatarSrc, name, id,
inviterName, memberCount, desc, options,
}) {
return (
2021-08-31 18:43:31 +05:30
<div className="room-tile">
<div className="room-tile__avatar">
2021-07-28 18:45:52 +05:30
<Avatar
imageSrc={avatarSrc}
bgColor={colorMXID(id)}
text={name.slice(0, 1)}
/>
</div>
2021-08-31 18:43:31 +05:30
<div className="room-tile__content">
2021-07-28 18:45:52 +05:30
<Text variant="s1">{name}</Text>
<Text variant="b3">
{
inviterName !== null
? `Invited by ${inviterName} to ${id}${memberCount === null ? '' : `${memberCount} members`}`
: id + (memberCount === null ? '' : `${memberCount} members`)
}
</Text>
{
desc !== null && (typeof desc === 'string')
2021-08-31 18:43:31 +05:30
? <Text className="room-tile__content__desc" variant="b2">{linkifyContent(desc)}</Text>
2021-07-28 18:45:52 +05:30
: desc
}
</div>
{ options !== null && (
2021-08-31 18:43:31 +05:30
<div className="room-tile__options">
2021-07-28 18:45:52 +05:30
{options}
</div>
)}
</div>
);
}
2021-08-31 18:43:31 +05:30
RoomTile.defaultProps = {
2021-07-28 18:45:52 +05:30
avatarSrc: null,
inviterName: null,
options: null,
desc: null,
memberCount: null,
};
2021-08-31 18:43:31 +05:30
RoomTile.propTypes = {
2021-07-28 18:45:52 +05:30
avatarSrc: PropTypes.string,
name: PropTypes.string.isRequired,
id: PropTypes.string.isRequired,
inviterName: PropTypes.string,
memberCount: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
]),
desc: PropTypes.node,
options: PropTypes.node,
};
2021-08-31 18:43:31 +05:30
export default RoomTile;