Skip to content

Commit 248ae5e

Browse files
authored
Merge pull request #48564 from DylanDylann/delegate-avatar
2 parents 06b17a7 + 7538aef commit 248ae5e

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import React from 'react';
2+
import {View} from 'react-native';
3+
import {useOnyx} from 'react-native-onyx';
4+
import Avatar from '@components/Avatar';
5+
import useThemeStyles from '@hooks/useThemeStyles';
6+
import * as UserUtils from '@libs/UserUtils';
7+
import CONST from '@src/CONST';
8+
import ONYXKEYS from '@src/ONYXKEYS';
9+
import ProfileAvatarWithIndicator from './ProfileAvatarWithIndicator';
10+
11+
type AvatarWithDelegateAvatarProps = {
12+
/** Emoji status */
13+
delegateEmail: string;
14+
15+
/** Whether the avatar is selected */
16+
isSelected?: boolean;
17+
};
18+
19+
function AvatarWithDelegateAvatar({delegateEmail, isSelected = false}: AvatarWithDelegateAvatarProps) {
20+
const styles = useThemeStyles();
21+
const personalDetails = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
22+
const delegatePersonalDetail = Object.values(personalDetails[0] ?? {}).find((personalDetail) => personalDetail?.login?.toLowerCase() === delegateEmail);
23+
24+
return (
25+
<View style={styles.sidebarStatusAvatarContainer}>
26+
<ProfileAvatarWithIndicator isSelected={isSelected} />
27+
<View style={[styles.sidebarStatusAvatar]}>
28+
<View style={styles.emojiStatusLHN}>
29+
<Avatar
30+
size={CONST.AVATAR_SIZE.SMALL}
31+
source={UserUtils.getSmallSizeAvatar(delegatePersonalDetail?.avatar, delegatePersonalDetail?.accountID)}
32+
fallbackIcon={delegatePersonalDetail?.fallbackIcon}
33+
type={CONST.ICON_TYPE_AVATAR}
34+
/>
35+
</View>
36+
</View>
37+
</View>
38+
);
39+
}
40+
41+
AvatarWithDelegateAvatar.displayName = 'AvatarWithDelegateAvatar';
42+
43+
export default AvatarWithDelegateAvatar;

src/pages/home/sidebar/BottomTabAvatar.tsx

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, {useCallback} from 'react';
2+
import {useOnyx} from 'react-native-onyx';
23
import {PressableWithFeedback} from '@components/Pressable';
34
import Tooltip from '@components/Tooltip';
45
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
@@ -7,7 +8,9 @@ import useThemeStyles from '@hooks/useThemeStyles';
78
import interceptAnonymousUser from '@libs/interceptAnonymousUser';
89
import Navigation from '@libs/Navigation/Navigation';
910
import CONST from '@src/CONST';
11+
import ONYXKEYS from '@src/ONYXKEYS';
1012
import ROUTES from '@src/ROUTES';
13+
import AvatarWithDelegateAvatar from './AvatarWithDelegateAvatar';
1114
import AvatarWithOptionalStatus from './AvatarWithOptionalStatus';
1215
import ProfileAvatarWithIndicator from './ProfileAvatarWithIndicator';
1316

@@ -22,6 +25,8 @@ type BottomTabAvatarProps = {
2225
function BottomTabAvatar({isCreateMenuOpen = false, isSelected = false}: BottomTabAvatarProps) {
2326
const styles = useThemeStyles();
2427
const {translate} = useLocalize();
28+
const [account] = useOnyx(ONYXKEYS.ACCOUNT);
29+
const delegateEmail = account?.delegatedAccess?.delegate ?? '';
2530
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
2631
const emojiStatus = currentUserPersonalDetails?.status?.emojiCode ?? '';
2732

@@ -36,7 +41,14 @@ function BottomTabAvatar({isCreateMenuOpen = false, isSelected = false}: BottomT
3641

3742
let children;
3843

39-
if (emojiStatus) {
44+
if (delegateEmail) {
45+
children = (
46+
<AvatarWithDelegateAvatar
47+
delegateEmail={delegateEmail}
48+
isSelected={isSelected}
49+
/>
50+
);
51+
} else if (emojiStatus) {
4052
children = (
4153
<AvatarWithOptionalStatus
4254
emojiStatus={emojiStatus}

0 commit comments

Comments
 (0)