From eb29b033fc05f2cbcb2470ef37e4be7877b68296 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Thu, 25 Mar 2021 18:33:04 -0300 Subject: [PATCH] Regression: Add view room action on Teams Channels (#21295) * add threads on teams and headers items positions * add click to view room * Review * Add enter action * fix component pattern Co-authored-by: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Co-authored-by: Tasso Evangelista Co-authored-by: Gabriel Henriques --- app/discussion/client/tabBar.ts | 2 +- app/threads/client/flextab/threadlist.tsx | 4 +- .../usePreventProgation.ts} | 0 .../contextualBar/Info/RoomInfo/RoomInfo.js | 21 +++++++-- client/views/room/contextualBar/Info/index.js | 14 +++--- .../RoomMembers/List/components/MemberItem.js | 2 +- .../teams/contextualBar/TeamChannelItem.js | 9 +++- .../views/teams/contextualBar/TeamChannels.js | 44 +++++++++++++++---- .../contextualBar/{index.ts => tabBar.ts} | 10 ++--- client/views/teams/index.js | 2 +- client/views/teams/info/tabBar.ts | 2 +- client/views/teams/members/tabBar.ts | 2 +- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + 13 files changed, 83 insertions(+), 30 deletions(-) rename client/{views/room/contextualBar/RoomMembers/List/hooks/usePreventProgation.tsx => hooks/usePreventProgation.ts} (100%) rename client/views/teams/contextualBar/{index.ts => tabBar.ts} (69%) diff --git a/app/discussion/client/tabBar.ts b/app/discussion/client/tabBar.ts index bcdfb59b803..14bfe145c43 100644 --- a/app/discussion/client/tabBar.ts +++ b/app/discussion/client/tabBar.ts @@ -15,6 +15,6 @@ addAction('discussions', () => { icon: 'discussion', template, full: true, - order: 1, + order: 7, } : null), [discussionEnabled]); }); diff --git a/app/threads/client/flextab/threadlist.tsx b/app/threads/client/flextab/threadlist.tsx index 45bf9686633..75650d3dd6c 100644 --- a/app/threads/client/flextab/threadlist.tsx +++ b/app/threads/client/flextab/threadlist.tsx @@ -22,7 +22,7 @@ addAction('thread', (options) => { const room = options.room as unknown as ISubscription; const threadsEnabled = useSetting('Threads_enabled'); return useMemo(() => (threadsEnabled ? { - groups: ['channel', 'group', 'direct'], + groups: ['channel', 'group', 'direct', 'team'], id: 'thread', full: true, title: 'Threads', @@ -35,6 +35,6 @@ addAction('thread', (options) => { { unread > 0 && {unread} } ; }, - order: 2, + order: 4, } : null), [threadsEnabled, room.tunread?.length, room.tunreadUser?.length, room.tunreadGroup?.length]); }); diff --git a/client/views/room/contextualBar/RoomMembers/List/hooks/usePreventProgation.tsx b/client/hooks/usePreventProgation.ts similarity index 100% rename from client/views/room/contextualBar/RoomMembers/List/hooks/usePreventProgation.tsx rename to client/hooks/usePreventProgation.ts diff --git a/client/views/room/contextualBar/Info/RoomInfo/RoomInfo.js b/client/views/room/contextualBar/Info/RoomInfo/RoomInfo.js index f76b2541967..116ec42ae34 100644 --- a/client/views/room/contextualBar/Info/RoomInfo/RoomInfo.js +++ b/client/views/room/contextualBar/Info/RoomInfo/RoomInfo.js @@ -49,6 +49,7 @@ export const RoomInfo = function RoomInfo({ rid, icon, retentionPolicy = {}, + onClickBack, onClickHide, onClickClose, onClickLeave, @@ -56,6 +57,7 @@ export const RoomInfo = function RoomInfo({ onClickDelete, onClickMoveToTeam, onClickConvertToTeam, + onClickEnterRoom, }) { const t = useTranslation(); @@ -67,6 +69,11 @@ export const RoomInfo = function RoomInfo({ } = retentionPolicy; const memoizedActions = useMemo(() => ({ + ...onClickEnterRoom && { enter: { + label: t('Enter'), + icon: 'login', + action: onClickEnterRoom, + } }, ...onClickEdit && { edit: { label: t('Edit'), icon: 'edit', @@ -97,7 +104,7 @@ export const RoomInfo = function RoomInfo({ action: onClickLeave, icon: 'sign-out', } }, - }), [onClickEdit, t, onClickDelete, onClickMoveToTeam, onClickConvertToTeam, onClickHide, onClickLeave]); + }), [onClickEdit, t, onClickDelete, onClickMoveToTeam, onClickConvertToTeam, onClickHide, onClickLeave, onClickEnterRoom]); const { actions: actionsDefinition, menu: menuOptions } = useActionSpread(memoizedActions); @@ -127,7 +134,7 @@ export const RoomInfo = function RoomInfo({ return ( <> - + {onClickBack ? : } {t('Room_Info')} { onClickClose && } @@ -186,9 +193,11 @@ export const RoomInfo = function RoomInfo({ ); }; -export default ({ +const RoomInfoWithData = ({ rid, openEditing, + onClickBack, + onEnterRoom, }) => { const onClickClose = useTabBarClose(); const t = useTranslation(); @@ -328,12 +337,15 @@ export default ({ />); }); + const onClickEnterRoom = useMutableCallback(() => onEnterRoom(room)); + return ( } description={room.description && } @@ -348,3 +361,5 @@ export default ({ /> ); }; + +export default RoomInfoWithData; diff --git a/client/views/room/contextualBar/Info/index.js b/client/views/room/contextualBar/Info/index.js index 40f9e52914f..f0a262c83c3 100644 --- a/client/views/room/contextualBar/Info/index.js +++ b/client/views/room/contextualBar/Info/index.js @@ -1,11 +1,15 @@ import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; import React, { useState } from 'react'; -import EditChannelWithData from './EditRoomInfo'; -import RoomInfo from './RoomInfo'; +import EditRoomInfoWithData from './EditRoomInfo'; +import RoomInfoWithData from './RoomInfo'; -export default ({ rid }) => { +const RoomInfo = ({ rid, onClickBack, onEnterRoom }) => { const [editing, setEditing] = useState(false); - const onClickBack = useMutableCallback(() => setEditing(false)); - return editing ? : ; + const backToView = useMutableCallback(() => setEditing(false)); + return editing + ? + : ; }; + +export default RoomInfo; diff --git a/client/views/room/contextualBar/RoomMembers/List/components/MemberItem.js b/client/views/room/contextualBar/RoomMembers/List/components/MemberItem.js index b7ef8063c45..fd470fbf404 100644 --- a/client/views/room/contextualBar/RoomMembers/List/components/MemberItem.js +++ b/client/views/room/contextualBar/RoomMembers/List/components/MemberItem.js @@ -11,7 +11,7 @@ import { useUserInfoActions } from '../../../../hooks/useUserInfoActions'; import { useActionSpread } from '../../../../../hooks/useActionSpread'; import UserAvatar from '../../../../../../components/avatar/UserAvatar'; import { ReactiveUserStatus } from '../../../../../../components/UserStatus'; -import { usePreventProgation } from '../hooks/usePreventProgation'; +import { usePreventProgation } from '../../../../../../hooks/usePreventProgation'; const UserActions = ({ username, _id, rid }) => { const { menu: menuOptions } = useActionSpread(useUserInfoActions({ _id, username }, rid), 0); diff --git a/client/views/teams/contextualBar/TeamChannelItem.js b/client/views/teams/contextualBar/TeamChannelItem.js index d592889dd3e..cc076942e44 100644 --- a/client/views/teams/contextualBar/TeamChannelItem.js +++ b/client/views/teams/contextualBar/TeamChannelItem.js @@ -8,6 +8,7 @@ import { useSetModal } from '../../../contexts/ModalContext'; import RoomAvatar from '../../../components/avatar/RoomAvatar'; import ConfirmationModal from '../modals/ConfirmationModal'; import { roomTypes } from '../../../../app/utils/client'; +import { usePreventProgation } from '../../../hooks/usePreventProgation'; import Breadcrumbs from '../../../components/Breadcrumbs'; export const useReactModal = (Component, props) => { @@ -93,24 +94,28 @@ const RoomActions = ({ room }) => { />; }; -export const TeamChannelItem = ({ room }) => { +export const TeamChannelItem = ({ room, onClickView }) => { const t = useTranslation(); const [showButton, setShowButton] = useState(); const isReduceMotionEnabled = usePrefersReducedMotion(); const handleMenuEvent = { [isReduceMotionEnabled ? 'onMouseEnter' : 'onTransitionEnd']: setShowButton }; + const onClick = usePreventProgation(); + return (