import React, { useEffect, useState } from 'react'; import { StatusBullet } from '@rocket.chat/fuselage'; import { useTranslation } from '../../contexts/TranslationContext'; import { Presence } from '../../lib/presence'; export const UserStatus = React.memo(({ small, ...props }) => { const size = small ? 'small' : 'large'; const t = useTranslation(); switch (props.status) { case 'online': return ; case 'busy': return ; case 'away': return ; case 'Offline': return ; default: return ; } }); export const Busy = (props) => ; export const Away = (props) => ; export const Online = (props) => ; export const Offline = (props) => ; export const Loading = (props) => ; export const colors = { busy: 'danger-500', away: 'warning-600', online: 'success-500', offline: 'neutral-600', }; export const usePresence = (uid, presence) => { const [status, setStatus] = useState(presence); useEffect(() => { const handle = ({ status = 'offline' }) => { setStatus(status); }; Presence.listen(uid, handle); return () => { Presence.stop(uid, handle); }; }, [uid]); return status; }; export const ReactiveUserStatus = React.memo(({ uid, presence, ...props }) => { const status = usePresence(uid, presence); return ; });