Regression: Fix presence request logic (#19527)

pull/19532/head
Diego Sampaio 5 years ago committed by GitHub
parent c5a8223f61
commit 714a94b50c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      client/components/basic/UserStatus.js
  2. 12
      client/lib/presence.ts

@ -1,5 +1,6 @@
import React, { useEffect, useState } from 'react';
import { StatusBullet } from '@rocket.chat/fuselage';
import { useSafely } from '@rocket.chat/fuselage-hooks';
import { useTranslation } from '../../contexts/TranslationContext';
import { Presence } from '../../lib/presence';
@ -34,7 +35,7 @@ export const colors = {
};
export const usePresence = (uid, presence) => {
const [status, setStatus] = useState(presence);
const [status, setStatus] = useSafely(useState(presence));
useEffect(() => {
const handle = ({ status = 'loading' }) => {
setStatus(status);
@ -43,7 +44,7 @@ export const usePresence = (uid, presence) => {
return () => {
Presence.stop(uid, handle);
};
}, [uid]);
}, [setStatus, uid]);
return status;
};

@ -40,7 +40,7 @@ const getPresence = ((): ((uid: User['_id']) => void) => {
});
currentUids.forEach((uid) => {
emitter.emit(uid, { uid, status: 'offline' });
emitter.emit(uid, { _id: uid, status: 'offline' });
});
currentUids.clear();
@ -99,10 +99,12 @@ const listen = (uid: User['_id'], handler: Handler<PresenceUpdate>): void => {
};
const stop = (uid: User['_id'], handler: Handler<PresenceUpdate>): void => {
emitter.off(uid, handler);
emitter.off(uid, update);
emitter.off('reset', handler);
emitter.emit('remove', uid);
setTimeout(() => {
emitter.off(uid, handler);
emitter.off(uid, update);
emitter.off('reset', handler);
emitter.emit('remove', uid);
}, 5000);
};
const reset = (): void => {

Loading…
Cancel
Save