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';
export const UserStatus = React.memo(({ small, status, ...props }) => {
const size = small ? 'small' : 'large';
const t = useTranslation();
switch (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] = useSafely(useState(presence));
useEffect(() => {
const handle = ({ status = 'loading' }) => {
setStatus(status);
};
Presence.listen(uid, handle);
return () => {
Presence.stop(uid, handle);
};
}, [setStatus, uid]);
return status;
};
export const ReactiveUserStatus = React.memo(({ uid, presence, ...props }) => {
const status = usePresence(uid, presence);
return ;
});