Conference: correction détection déconnexion

This commit is contained in:
2020-10-12 21:56:19 +02:00
parent 6f757002b1
commit 0b93b0875e
2 changed files with 40 additions and 30 deletions

View File

@ -13,22 +13,23 @@ const StatusThumbsUp = 'thumbs-up';
const StatusThumbsDown = 'thumbs-down';
const StatusNoVote = 'no-vote';
const HeartbeatInterval = 5000;
export const ConferencePage:FunctionComponent<ConferencePageProps> = () => {
const { user } = useUserProfile();
const { id, data, peers, setNickname, setEmail, ping, setStatus } = useConference();
const { uuid, data, setNickname, setEmail, ping, setStatus, forget } = useConference();
const currentStatus = data.statuses[id];
const currentStatus = data.statuses[uuid];
useEffect(() => {
if (peers.length === 0) return;
if (!id || (!user.name && !user.email)) return;
if (!user.name && !user.email) return;
setNickname(user.name || user.email.split('@')[0]);
setEmail(user.email);
}, [user.name, user.email, peers.length]);
}, [user.name, user.email]);
useEffect(() => {
ping();
const intervalId = setInterval(() => ping(), 30000);
const intervalId = setInterval(() => ping(), HeartbeatInterval);
return () => clearInterval(intervalId);
}, []);
@ -78,11 +79,21 @@ export const ConferencePage:FunctionComponent<ConferencePageProps> = () => {
<h3 className="is-size-3">Assemblée</h3>
<div className="columns mt-1">
<UserCard className="column is-narrow"
nickname={data.nicknames[id]}
nickname={data.nicknames[uuid]}
status={currentStatus}
email={user.email} />
{
peers.map(p => {
Object.keys(data.peers).map(p => {
const now = new Date();
const lastHeartBeat = new Date(data.peers[p]);
if (p === uuid) return null;
if (now.getTime() > lastHeartBeat.getTime() + HeartbeatInterval) {
forget(p);
return null;
}
const nickname = data.nicknames[p] || '???';
const email = data.emails[p] || '';
return (