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 (
{room.t === 'c' ? : }
{roomTypes.getRoomName(room.t, room)} {room.teamDefault ? {t('Team_Auto-join')} : ''}
-
+
{showButton ? : ;
}
return ;
});
@@ -37,6 +42,7 @@ const BaseTeamChannels = ({
onClickCreateNew,
total,
loadMoreItems,
+ onClickView,
}) => {
const t = useTranslation();
const inputRef = useAutoFocus(true);
@@ -76,13 +82,17 @@ const BaseTeamChannels = ({
{!loading && channels && channels.length > 0 &&
}
/>}
@@ -118,14 +128,17 @@ export const useReactModal = (Component, props) => {
});
};
-function TeamChannels({ teamId, tabBar }) {
+const TeamChannels = ({ teamId }) => {
+ const [state, setState] = useState({});
+ const onClickClose = useTabBarClose();
+
const [type, setType] = useLocalStorage('channels-list-type', 'all');
const [text, setText] = useState('');
const [roomList] = useState(() => new RecordList());
const roomListEndpoint = useEndpoint('GET', 'teams.listRooms');
- const fetchData = useCallback(async (/* start, end*/) => {
+ const fetchData = useCallback(async () => {
const { rooms, total } = await roomListEndpoint({ teamId });
const roomsDated = rooms.map((rooms) => {
@@ -149,9 +162,23 @@ function TeamChannels({ teamId, tabBar }) {
}, []);
const addExisting = useReactModal(AddExistingModal, { teamId });
-
const createNew = useReactModal(CreateChannel, { teamId });
+ const goToRoom = useCallback((room) => roomTypes.openRouteLink(room.t, room), []);
+ const handleBack = useCallback(() => setState({}), [setState]);
+ const viewRoom = useMutableCallback((e) => {
+ const { rid } = e.currentTarget.dataset;
+
+ setState({
+ tab: 'RoomInfo',
+ rid,
+ });
+ });
+
+ if (state.tab === 'RoomInfo') {
+ return ;
+ }
+
return (
);
-}
+};
export default TeamChannels;
diff --git a/client/views/teams/contextualBar/index.ts b/client/views/teams/contextualBar/tabBar.ts
similarity index 69%
rename from client/views/teams/contextualBar/index.ts
rename to client/views/teams/contextualBar/tabBar.ts
index d2633b51a86..d2f359a09f7 100644
--- a/client/views/teams/contextualBar/index.ts
+++ b/client/views/teams/contextualBar/tabBar.ts
@@ -1,14 +1,14 @@
-import { lazy, LazyExoticComponent, FC } from 'react';
+import { FC, lazy, LazyExoticComponent } from 'react';
import { addAction } from '../../room/lib/Toolbox';
-addAction('team-channels', () => ({
+addAction('team-channels', {
groups: ['team'],
id: 'team-channels',
anonymous: true,
+ full: true,
title: 'Team_Channels',
icon: 'hash',
template: lazy(() => import('./TeamChannels')) as LazyExoticComponent,
- full: true,
- order: 8,
-}));
+ order: 2,
+});
diff --git a/client/views/teams/index.js b/client/views/teams/index.js
index 9a2bd377992..b97eb784c4c 100644
--- a/client/views/teams/index.js
+++ b/client/views/teams/index.js
@@ -1,4 +1,4 @@
-import './contextualBar';
+import './contextualBar/tabBar';
import './info/tabBar.ts';
import './members/tabBar';
import './info';
diff --git a/client/views/teams/info/tabBar.ts b/client/views/teams/info/tabBar.ts
index 9202bb9f91a..ee8a103aa10 100644
--- a/client/views/teams/info/tabBar.ts
+++ b/client/views/teams/info/tabBar.ts
@@ -10,5 +10,5 @@ addAction('team-info', {
title: 'Teams_Info',
icon: 'info-circled',
template: lazy(() => import('./index.js')) as LazyExoticComponent,
- order: 7,
+ order: 1,
});
diff --git a/client/views/teams/members/tabBar.ts b/client/views/teams/members/tabBar.ts
index 9495adf19ed..2f8493f7ce8 100644
--- a/client/views/teams/members/tabBar.ts
+++ b/client/views/teams/members/tabBar.ts
@@ -10,5 +10,5 @@ addAction('team-members', {
title: 'Teams_members',
icon: 'members',
template: lazy(() => import('./index')),
- order: 7,
+ order: 6,
});
diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json
index 1892dccccdc..e22bf9ce7cf 100644
--- a/packages/rocketchat-i18n/i18n/en.i18n.json
+++ b/packages/rocketchat-i18n/i18n/en.i18n.json
@@ -1536,6 +1536,7 @@
"End": "End",
"End_OTR": "End OTR",
"Engagement_Dashboard": "Engagement Dashboard",
+ "Enter": "Enter",
"Enter_a_custom_message": "Enter a custom message",
"Enter_a_department_name": "Enter a department name",
"Enter_a_name": "Enter a name",