31 lines
854 B
TypeScript
31 lines
854 B
TypeScript
import { TUserStatus } from '../../definitions';
|
|
import { useAppSelector } from '../../lib/hooks';
|
|
import { RoomTypes } from '../../lib/methods';
|
|
|
|
export const useUserStatus = (
|
|
type: RoomTypes,
|
|
liveChatStatus?: TUserStatus,
|
|
id?: string
|
|
): { connected: boolean; status: TUserStatus } => {
|
|
const connected = useAppSelector(state => state.meteor.connected);
|
|
const presenceDisabled = useAppSelector(state => state.settings.Presence_broadcast_disabled);
|
|
const userStatus = useAppSelector(state => state.activeUsers[id || '']?.status);
|
|
|
|
let status = 'loading';
|
|
if (connected) {
|
|
if (type === 'd') {
|
|
if (presenceDisabled) {
|
|
status = 'disabled';
|
|
} else {
|
|
status = userStatus || 'loading';
|
|
}
|
|
} else if (type === 'l' && liveChatStatus) {
|
|
status = liveChatStatus;
|
|
}
|
|
}
|
|
return {
|
|
connected,
|
|
status: status as TUserStatus
|
|
};
|
|
};
|