|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
import { Button, PositionAnimated, Options, useCursor, Box } from '@rocket.chat/fuselage'; |
|
|
|
|
import React, { useRef, useCallback, useState, useMemo, useEffect } from 'react'; |
|
|
|
|
|
|
|
|
|
import { useSetting } from '../contexts/SettingsContext'; |
|
|
|
|
import { useTranslation } from '../contexts/TranslationContext'; |
|
|
|
|
import { UserStatus } from './UserStatus'; |
|
|
|
|
|
|
|
|
@ -15,6 +16,8 @@ const UserStatusMenu = ({ |
|
|
|
|
|
|
|
|
|
const [status, setStatus] = useState(initialStatus); |
|
|
|
|
|
|
|
|
|
const allowInvisibleStatus = useSetting('Accounts_AllowInvisibleStatusOption'); |
|
|
|
|
|
|
|
|
|
const options = useMemo(() => { |
|
|
|
|
const renderOption = (status, label) => ( |
|
|
|
|
<Box display='flex' flexDirection='row' alignItems='center'> |
|
|
|
@ -25,13 +28,18 @@ const UserStatusMenu = ({ |
|
|
|
|
</Box> |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
const statuses = [ |
|
|
|
|
['online', renderOption('online', t('Online'))], |
|
|
|
|
['busy', renderOption('busy', t('Busy'))], |
|
|
|
|
['away', renderOption('away', t('Away'))], |
|
|
|
|
['offline', renderOption('offline', t('Invisible'))], |
|
|
|
|
]; |
|
|
|
|
}, [t]); |
|
|
|
|
|
|
|
|
|
if (allowInvisibleStatus) { |
|
|
|
|
statuses.push(['offline', renderOption('offline', t('Invisible'))]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return statuses; |
|
|
|
|
}, [t, allowInvisibleStatus]); |
|
|
|
|
|
|
|
|
|
const [cursor, handleKeyDown, handleKeyUp, reset, [visible, hide, show]] = useCursor( |
|
|
|
|
-1, |
|
|
|
|