import React, { memo, useEffect, useState } from 'react'; import { Switch, View } from 'react-native'; import PropTypes from 'prop-types'; import * as List from '../../../containers/List'; import styles from '../../../views/RoomsListView/styles'; import { SWITCH_TRACK_COLOR, themes } from '../../../constants/colors'; import { withTheme } from '../../../theme'; import UnreadBadge from '../../../presentation/UnreadBadge'; import RocketChat from '../../../lib/rocketchat'; import { changeLivechatStatus, isOmnichannelStatusAvailable } from '../lib'; const OmnichannelStatus = memo(({ searching, goQueue, theme, queueSize, inquiryEnabled, user }) => { if (searching > 0 || !(RocketChat.isOmnichannelModuleAvailable() && user?.roles?.includes('livechat-agent'))) { return null; } const [status, setStatus] = useState(isOmnichannelStatusAvailable(user)); useEffect(() => { setStatus(isOmnichannelStatusAvailable(user)); }, [user.statusLivechat]); const toggleLivechat = async () => { try { setStatus(v => !v); await changeLivechatStatus(); } catch { setStatus(v => !v); } }; return ( <> } color={themes[theme].auxiliaryText} onPress={goQueue} right={() => ( {inquiryEnabled ? : null} )} /> ); }); OmnichannelStatus.propTypes = { searching: PropTypes.bool, goQueue: PropTypes.func, queueSize: PropTypes.number, inquiryEnabled: PropTypes.bool, theme: PropTypes.string, user: PropTypes.shape({ roles: PropTypes.array, statusLivechat: PropTypes.string }) }; export default withTheme(OmnichannelStatus);