Skip to content

Commit 83313ce

Browse files
committed
MainTabsScreen: Add Users icon to bottom nav
Fixes: #5495
1 parent c35b883 commit 83313ce

File tree

3 files changed

+62
-2
lines changed

3 files changed

+62
-2
lines changed

src/main/MainTabsScreen.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ import type { AppNavigationMethods, AppNavigationProp } from '../nav/AppNavigato
1313
import { bottomTabNavigatorConfig } from '../styles/tabs';
1414
import HomeScreen from './HomeScreen';
1515
import PmConversationsScreen from '../pm-conversations/PmConversationsScreen';
16-
import { IconInbox, IconStream, IconPeople } from '../common/Icons';
16+
import { IconInbox, IconStream, IconPeople, IconPrivateChat } from '../common/Icons';
1717
import OwnAvatar from '../common/OwnAvatar';
1818
import OfflineNotice from '../common/OfflineNotice';
1919
import ProfileScreen from '../account-info/ProfileScreen';
2020
import styles, { BRAND_COLOR, ThemeContext } from '../styles';
2121
import SubscriptionsScreen from '../streams/SubscriptionsScreen';
22+
import UsersProfileScreen from '../users/UsersProfileScreen';
2223

2324
export type MainTabsNavigatorParamList = {|
2425
+home: RouteParamsOf<typeof HomeScreen>,
@@ -77,14 +78,22 @@ export default function MainTabsScreen(props: Props): Node {
7778
component={PmConversationsScreen}
7879
options={{
7980
tabBarLabel: 'Private messages',
80-
tabBarIcon: ({ color }) => <IconPeople size={24} color={color} />,
81+
tabBarIcon: ({ color }) => <IconPrivateChat size={24} color={color} />,
8182
tabBarBadge: unreadPmsCount > 0 ? unreadPmsCount : undefined,
8283
tabBarBadgeStyle: {
8384
color: 'white',
8485
backgroundColor: BRAND_COLOR,
8586
},
8687
}}
8788
/>
89+
<Tab.Screen
90+
name="users"
91+
component={UsersProfileScreen}
92+
options={{
93+
tabBarLabel: 'Users',
94+
tabBarIcon: ({ color }) => <IconPeople size={24} color={color} />,
95+
}}
96+
/>
8897
<Tab.Screen
8998
name="profile"
9099
component={ProfileScreen}

src/users/UsersProfileCard.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/* @flow strict-local */
2+
3+
import React, { useCallback } from 'react';
4+
import type { Node } from 'react';
5+
6+
import type { UserOrBot } from '../types';
7+
import { useSelector } from '../react-redux';
8+
import UserList from './UserList';
9+
import { getUsers, getPresence } from '../selectors';
10+
import { useNavigation } from '../react-navigation';
11+
12+
type Props = $ReadOnly<{|
13+
filter: string,
14+
|}>;
15+
16+
export default function UsersProfileCard(props: Props): Node {
17+
const { filter } = props;
18+
const users = useSelector(getUsers);
19+
const presences = useSelector(getPresence);
20+
21+
const navigation = useNavigation();
22+
const handleUserNarrow = useCallback(
23+
(user: UserOrBot) => {
24+
navigation.push('account-details', { userId: user.user_id });
25+
},
26+
[navigation],
27+
);
28+
29+
return (
30+
<UserList users={users} filter={filter} presences={presences} onPress={handleUserNarrow} />
31+
);
32+
}

src/users/UsersProfileScreen.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/* @flow strict-local */
2+
import React from 'react';
3+
import type { Node } from 'react';
4+
import { SafeAreaView } from 'react-native-safe-area-context';
5+
6+
import type { AppNavigationProp } from '../nav/AppNavigator';
7+
import UsersProfileCard from './UsersProfileCard';
8+
9+
type Props = $ReadOnly<{|
10+
navigation: AppNavigationProp<'users'>,
11+
|}>;
12+
13+
export default function UsersInfoScreen(props: Props): Node {
14+
return (
15+
<SafeAreaView mode="padding" edges={['top']} style={{ flex: 1 }} scrollEnabled={false}>
16+
<UsersProfileCard filter="" />
17+
</SafeAreaView>
18+
);
19+
}

0 commit comments

Comments
 (0)