Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
import { NavBarItem } from '@rocket.chat/fuselage';
import type { GenericMenuItemProps } from '@rocket.chat/ui-client';
import { GenericMenu } from '@rocket.chat/ui-client';
import { useVoipState } from '@rocket.chat/ui-voip';
import type { HTMLAttributes } from 'react';
import { useTranslation } from 'react-i18next';

import { useOmnichannelEnabled } from '../../hooks/omnichannel/useOmnichannelEnabled';

type NavBarControlsMenuProps = Omit<HTMLAttributes<HTMLElement>, 'is'> & {
voipItems: GenericMenuItemProps[];
omnichannelItems: GenericMenuItemProps[];
isPressed: boolean;
callItem?: GenericMenuItemProps;
};

const NavBarControlsMenu = ({ voipItems, omnichannelItems, isPressed, ...props }: NavBarControlsMenuProps) => {
const NavBarControlsMenu = ({ omnichannelItems, isPressed, callItem, ...props }: NavBarControlsMenuProps) => {
const { t } = useTranslation();
const { isEnabled: showVoip } = useVoipState();
const showOmnichannel = useOmnichannelEnabled();

const sections = [
{
title: t('Voice_Call'),
items: showVoip ? voipItems : [],
items: callItem ? [callItem] : [],
},
{
title: t('Omnichannel'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import { useOmnichannelCallDialPadAction } from '../NavBarOmnichannelGroup/hooks
import { useOmnichannelCallToggleAction } from '../NavBarOmnichannelGroup/hooks/useOmnichannelCallToggleAction';

type NavBarControlsMenuProps = Omit<HTMLAttributes<HTMLElement>, 'is'> & {
voipItems: GenericMenuItemProps[];
omnichannelItems: GenericMenuItemProps[];
isPressed: boolean;
callItem?: GenericMenuItemProps;
};

const NavBarControlsWithCall = ({ voipItems, omnichannelItems, isPressed, ...props }: NavBarControlsMenuProps) => {
const NavBarControlsWithCall = ({ omnichannelItems, isPressed, ...props }: NavBarControlsMenuProps) => {
const {
icon: omnichannelCallIcon,
title: omnichannelCallTitle,
Expand Down Expand Up @@ -44,7 +44,7 @@ const NavBarControlsWithCall = ({ voipItems, omnichannelItems, isPressed, ...pro
},
] as GenericMenuItemProps[];

return <NavBarControlsMenu voipItems={voipItems} omnichannelItems={omnichannelItemsWithCall} isPressed={isPressed} {...props} />;
return <NavBarControlsMenu omnichannelItems={omnichannelItemsWithCall} isPressed={isPressed} {...props} />;
};

export default NavBarControlsWithCall;
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type { GenericMenuItemProps } from '@rocket.chat/ui-client';
import { useMediaCallAction } from '@rocket.chat/ui-voip';
import type { HTMLAttributes } from 'react';

import NavBarControlsMenu from './NavBarControlsMenu';
Expand All @@ -7,16 +8,13 @@ import { useIsCallEnabled } from '../../contexts/CallContext';
import { useOmnichannelContactAction } from '../NavBarOmnichannelGroup/hooks/useOmnichannelContactAction';
import { useOmnichannelLivechatToggle } from '../NavBarOmnichannelGroup/hooks/useOmnichannelLivechatToggle';
import { useOmnichannelQueueAction } from '../NavBarOmnichannelGroup/hooks/useOmnichannelQueueAction';
import { useVoipDialerAction } from '../NavBarVoipGroup/hooks/useVoipDialerAction';
import { useVoipTogglerAction } from '../NavBarVoipGroup/hooks/useVoipTogglerAction';

type NavBarControlsMenuProps = Omit<HTMLAttributes<HTMLElement>, 'is'>;

const NavBarControlsWithData = (props: NavBarControlsMenuProps) => {
const isCallEnabled = useIsCallEnabled();

const { title: dialerTitle, handleToggleDialer, isPressed: isVoipDialerPressed, isDisabled: dialerDisabled } = useVoipDialerAction();
const { isRegistered, title: togglerTitle, handleToggleVoip, isDisabled: togglerDisabled } = useVoipTogglerAction();
const callAction = useMediaCallAction();

const {
isEnabled: queueEnabled,
Expand All @@ -39,30 +37,21 @@ const NavBarControlsWithData = (props: NavBarControlsMenuProps) => {
handleAvailableStatusChange,
} = useOmnichannelLivechatToggle();

const voipItems = [
{
id: 'voipDialer',
icon: 'dialpad',
content: dialerTitle,
onClick: handleToggleDialer,
disabled: dialerDisabled,
},
{
id: 'voipToggler',
icon: isRegistered ? 'phone-disabled' : 'phone',
content: togglerTitle,
onClick: handleToggleVoip,
disabled: togglerDisabled,
},
].filter(Boolean) as GenericMenuItemProps[];
const callItem = callAction
? {
id: 'rcx-media-call',
icon: callAction.icon,
content: callAction.title,
onClick: () => callAction.action(),
}
: undefined;

const omnichannelItems = [
queueEnabled && {
id: 'omnichannelQueue',
icon: queueIcon,
content: queueTitle,
onClick: handleGoToQueue,
disabled: dialerDisabled,
},
{
id: 'omnichannelContact',
Expand All @@ -78,13 +67,13 @@ const NavBarControlsWithData = (props: NavBarControlsMenuProps) => {
},
].filter(Boolean) as GenericMenuItemProps[];

const isPressed = isVoipDialerPressed || isQueuePressed || isContactPressed;
const isPressed = isQueuePressed || isContactPressed;

if (isCallEnabled) {
return <NavbarControlsWithCall voipItems={voipItems} omnichannelItems={omnichannelItems} isPressed={isPressed} {...props} />;
return <NavbarControlsWithCall callItem={callItem} omnichannelItems={omnichannelItems} isPressed={isPressed} {...props} />;
}

return <NavBarControlsMenu voipItems={voipItems} omnichannelItems={omnichannelItems} isPressed={isPressed} {...props} />;
return <NavBarControlsMenu callItem={callItem} omnichannelItems={omnichannelItems} isPressed={isPressed} {...props} />;
};

export default NavBarControlsWithData;
Loading