diff --git a/apps/meteor/client/hooks/roomActions/useTeamInfoRoomAction.ts b/apps/meteor/client/hooks/roomActions/useTeamInfoRoomAction.ts index d4b8a1a73a900..7d43f2985d122 100644 --- a/apps/meteor/client/hooks/roomActions/useTeamInfoRoomAction.ts +++ b/apps/meteor/client/hooks/roomActions/useTeamInfoRoomAction.ts @@ -2,7 +2,7 @@ import { lazy, useMemo } from 'react'; import type { RoomToolboxActionConfig } from '../../views/room/contexts/RoomToolboxContext'; -const TeamsInfoWithRooms = lazy(() => import('../../views/teams/contextualBar/info/TeamsInfoWithRooms')); +const TeamsInfoWithData = lazy(() => import('../../views/teams/contextualBar/info/TeamsInfoWithData')); export const useTeamInfoRoomAction = () => { return useMemo( @@ -13,7 +13,7 @@ export const useTeamInfoRoomAction = () => { full: true, title: 'Teams_Info', icon: 'info-circled', - tabComponent: TeamsInfoWithRooms, + tabComponent: TeamsInfoWithData, order: 1, }), [], diff --git a/apps/meteor/client/views/teams/ConvertToChannelModal/BaseConvertToChannelModal.tsx b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/BaseConvertToChannelModal.tsx similarity index 100% rename from apps/meteor/client/views/teams/ConvertToChannelModal/BaseConvertToChannelModal.tsx rename to apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/BaseConvertToChannelModal.tsx diff --git a/apps/meteor/client/views/teams/ConvertToChannelModal/ConvertToChannelModal.tsx b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ConvertToChannelModal.tsx similarity index 79% rename from apps/meteor/client/views/teams/ConvertToChannelModal/ConvertToChannelModal.tsx rename to apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ConvertToChannelModal.tsx index f742102cd524c..4517b64471b26 100644 --- a/apps/meteor/client/views/teams/ConvertToChannelModal/ConvertToChannelModal.tsx +++ b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ConvertToChannelModal.tsx @@ -2,9 +2,9 @@ import type { IRoom, Serialized } from '@rocket.chat/core-typings'; import React, { useMemo } from 'react'; import BaseConvertToChannelModal from './BaseConvertToChannelModal'; -import GenericModalSkeleton from '../../../components/GenericModal/GenericModalSkeleton'; -import { useEndpointData } from '../../../hooks/useEndpointData'; -import { AsyncStatePhase } from '../../../lib/asyncState'; +import GenericModalSkeleton from '../../../../../components/GenericModal/GenericModalSkeleton'; +import { useEndpointData } from '../../../../../hooks/useEndpointData'; +import { AsyncStatePhase } from '../../../../../lib/asyncState'; type ConvertToChannelModalProps = { onClose: () => void; diff --git a/apps/meteor/client/views/teams/ConvertToChannelModal/ModalSteps/FirstStep.tsx b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ModalSteps/FirstStep.tsx similarity index 91% rename from apps/meteor/client/views/teams/ConvertToChannelModal/ModalSteps/FirstStep.tsx rename to apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ModalSteps/FirstStep.tsx index a4aba906e7d92..bc2f3d44d3b7e 100644 --- a/apps/meteor/client/views/teams/ConvertToChannelModal/ModalSteps/FirstStep.tsx +++ b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ModalSteps/FirstStep.tsx @@ -3,8 +3,8 @@ import { Box } from '@rocket.chat/fuselage'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import GenericModal from '../../../../components/GenericModal'; -import ChannelDesertionTable from '../../ChannelDesertionTable'; +import GenericModal from '../../../../../../components/GenericModal'; +import ChannelDesertionTable from '../../../../ChannelDesertionTable'; type FirstStepProps = { onClose: () => void; diff --git a/apps/meteor/client/views/teams/ConvertToChannelModal/ModalSteps/SecondStep.tsx b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ModalSteps/SecondStep.tsx similarity index 93% rename from apps/meteor/client/views/teams/ConvertToChannelModal/ModalSteps/SecondStep.tsx rename to apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ModalSteps/SecondStep.tsx index 27b4a9c7d7723..898a49ca4f5ce 100644 --- a/apps/meteor/client/views/teams/ConvertToChannelModal/ModalSteps/SecondStep.tsx +++ b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/ModalSteps/SecondStep.tsx @@ -3,7 +3,7 @@ import { Icon } from '@rocket.chat/fuselage'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import GenericModal from '../../../../components/GenericModal'; +import GenericModal from '../../../../../../components/GenericModal'; type SecondStepsProps = { onClose: () => void; diff --git a/apps/meteor/client/views/teams/ConvertToChannelModal/index.ts b/apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/index.ts similarity index 100% rename from apps/meteor/client/views/teams/ConvertToChannelModal/index.ts rename to apps/meteor/client/views/teams/contextualBar/info/ConvertToChannelModal/index.ts diff --git a/apps/meteor/client/views/teams/contextualBar/info/TeamsInfo.tsx b/apps/meteor/client/views/teams/contextualBar/info/TeamsInfo.tsx index 40f7414d8f32e..ed53c286f631a 100644 --- a/apps/meteor/client/views/teams/contextualBar/info/TeamsInfo.tsx +++ b/apps/meteor/client/views/teams/contextualBar/info/TeamsInfo.tsx @@ -1,10 +1,12 @@ import type { IRoom } from '@rocket.chat/core-typings'; -import { Box, Button, Callout, Option, Menu } from '@rocket.chat/fuselage'; +import { Box, Button, Callout, IconButton } from '@rocket.chat/fuselage'; import { RoomAvatar } from '@rocket.chat/ui-avatar'; +import { GenericMenu } from '@rocket.chat/ui-client'; import type { ReactElement } from 'react'; -import React, { useMemo } from 'react'; +import React from 'react'; import { useTranslation } from 'react-i18next'; +import { useTeamActions } from './useTeamActions'; import { ContextualbarHeader, ContextualbarIcon, @@ -25,105 +27,23 @@ import { } from '../../../../components/InfoPanel'; import RetentionPolicyCallout from '../../../../components/InfoPanel/RetentionPolicyCallout'; import MarkdownText from '../../../../components/MarkdownText'; -import type { Action } from '../../../hooks/useActionSpread'; -import { useActionSpread } from '../../../hooks/useActionSpread'; +import { useSplitRoomActions } from '../../../room/contextualBar/Info/hooks/useSplitRoomActions'; import { useRetentionPolicy } from '../../../room/hooks/useRetentionPolicy'; type TeamsInfoProps = { room: IRoom; - onClickHide?: () => void; - onClickClose?: () => void; - onClickLeave?: () => void; onClickEdit?: () => void; - onClickDelete?: () => void; + onClickClose?: () => void; onClickViewChannels: () => void; - onClickConvertToChannel?: () => void; }; -const TeamsInfo = ({ - room, - onClickHide, - onClickClose, - onClickLeave, - onClickEdit, - onClickDelete, - onClickViewChannels, - onClickConvertToChannel, -}: TeamsInfoProps): ReactElement => { +const TeamsInfo = ({ room, onClickClose, onClickEdit, onClickViewChannels }: TeamsInfoProps): ReactElement => { const { t } = useTranslation(); const retentionPolicy = useRetentionPolicy(room); + const memoizedActions = useTeamActions(room, { onClickEdit }); - const memoizedActions = useMemo( - () => ({ - ...(onClickEdit && { - edit: { - label: t('Edit'), - action: onClickEdit, - icon: 'edit' as const, - }, - }), - ...(onClickDelete && { - delete: { - label: t('Delete'), - action: onClickDelete, - icon: 'trash' as const, - }, - }), - ...(onClickConvertToChannel && { - convertToChannel: { - label: t('Convert_to_channel'), - action: onClickConvertToChannel, - icon: 'hash' as const, - }, - }), - ...(onClickHide && { - hide: { - label: t('Hide'), - action: onClickHide, - icon: 'eye-off' as const, - }, - }), - ...(onClickLeave && { - leave: { - label: t('Leave'), - action: onClickLeave, - icon: 'sign-out' as const, - }, - }), - }), - [t, onClickHide, onClickLeave, onClickEdit, onClickDelete, onClickConvertToChannel], - ); - - const { actions: actionsDefinition, menu: menuOptions } = useActionSpread(memoizedActions); - - const menu = useMemo(() => { - if (!menuOptions) { - return null; - } - - return ( -