element-call/src/CallList.jsx

52 lines
1.4 KiB
React
Raw Normal View History

2021-12-10 21:44:06 +00:00
import React, { useMemo } from "react";
2021-12-08 01:59:55 +00:00
import { Link } from "react-router-dom";
import { CopyButton } from "./button";
import { Facepile } from "./Facepile";
import { Avatar } from "./Avatar";
import { ReactComponent as VideoIcon } from "./icons/Video.svg";
2021-12-09 20:58:30 +00:00
import styles from "./CallList.module.css";
2021-12-10 21:44:06 +00:00
import { getRoomUrl } from "./ConferenceCallManagerHooks";
2021-12-08 01:59:55 +00:00
2021-12-09 20:58:30 +00:00
export function CallList({ title, rooms }) {
return (
<>
<h3>{title}</h3>
<div className={styles.callList}>
2021-12-10 21:44:06 +00:00
{rooms.map(({ roomId, roomName, avatarUrl, participants }) => (
2021-12-09 20:58:30 +00:00
<CallTile
key={roomId}
name={roomName}
avatarUrl={avatarUrl}
2021-12-10 21:44:06 +00:00
roomId={roomId}
2021-12-09 20:58:30 +00:00
participants={participants}
/>
))}
</div>
</>
);
}
2021-12-10 21:44:06 +00:00
function CallTile({ name, avatarUrl, roomId, participants }) {
2021-12-08 01:59:55 +00:00
return (
2021-12-10 21:44:06 +00:00
<Link to={`/room/${roomId}`} className={styles.callTile}>
2021-12-08 01:59:55 +00:00
<Avatar
size="md"
bgKey={name}
src={avatarUrl}
fallback={<VideoIcon width={16} height={16} />}
className={styles.avatar}
/>
<div className={styles.callInfo}>
<h5>{name}</h5>
2021-12-10 21:44:06 +00:00
<p>{roomId}</p>
2021-12-08 01:59:55 +00:00
{participants && <Facepile participants={participants} />}
</div>
<CopyButton
className={styles.copyButton}
variant="icon"
2021-12-10 21:44:06 +00:00
value={getRoomUrl(roomId)}
2021-12-08 01:59:55 +00:00
/>
</Link>
);
}