1
- import lodashGet from 'lodash/get' ;
2
1
import React from 'react' ;
3
2
import { View } from 'react-native' ;
4
3
import Icon from '@components/Icon' ;
@@ -12,10 +11,10 @@ import useTheme from '@hooks/useTheme';
12
11
import useThemeStyles from '@hooks/useThemeStyles' ;
13
12
import CONST from '@src/CONST' ;
14
13
import RadioListItem from './RadioListItem' ;
15
- import { baseListItemPropTypes } from './selectionListPropTypes ' ;
14
+ import type { BaseListItemProps , RadioItem , User } from './types ' ;
16
15
import UserListItem from './UserListItem' ;
17
16
18
- function BaseListItem ( {
17
+ function BaseListItem < TItem extends User | RadioItem > ( {
19
18
item,
20
19
isFocused = false ,
21
20
isDisabled = false ,
@@ -26,13 +25,12 @@ function BaseListItem({
26
25
onDismissError = ( ) => { } ,
27
26
rightHandSideComponent,
28
27
keyForList,
29
- } ) {
28
+ } : BaseListItemProps < TItem > ) {
30
29
const theme = useTheme ( ) ;
31
30
const styles = useThemeStyles ( ) ;
32
31
const StyleUtils = useStyleUtils ( ) ;
33
32
const { translate} = useLocalize ( ) ;
34
- const isUserItem = lodashGet ( item , 'icons.length' , 0 ) > 0 ;
35
- const ListItem = isUserItem ? UserListItem : RadioListItem ;
33
+ const isRadioItem = item . rightElement === undefined ;
36
34
37
35
const rightHandSideComponentRender = ( ) => {
38
36
if ( canSelectMultiple || ! rightHandSideComponent ) {
@@ -70,7 +68,7 @@ function BaseListItem({
70
68
styles . justifyContentBetween ,
71
69
styles . sidebarLinkInner ,
72
70
styles . userSelectNone ,
73
- isUserItem ? styles . peopleRow : styles . optionRow ,
71
+ isRadioItem ? styles . optionRow : styles . peopleRow ,
74
72
isFocused && styles . sidebarLinkActive ,
75
73
] }
76
74
>
@@ -100,20 +98,32 @@ function BaseListItem({
100
98
</ View >
101
99
</ View >
102
100
) }
103
- < ListItem
104
- item = { item }
105
- textStyles = { [
106
- styles . optionDisplayName ,
107
- isFocused ? styles . sidebarLinkActiveText : styles . sidebarLinkText ,
108
- styles . sidebarLinkTextBold ,
109
- styles . pre ,
110
- item . alternateText ? styles . mb1 : null ,
111
- ] }
112
- alternateTextStyles = { [ styles . textLabelSupporting , styles . lh16 , styles . pre ] }
113
- isDisabled = { isDisabled }
114
- onSelectRow = { onSelectRow }
115
- showTooltip = { showTooltip }
116
- />
101
+
102
+ { isRadioItem ? (
103
+ < RadioListItem
104
+ item = { item }
105
+ textStyles = { [ styles . optionDisplayName , isFocused ? styles . sidebarLinkActiveText : styles . sidebarLinkText , styles . pre , item . alternateText ? styles . mb1 : null ] }
106
+ alternateTextStyles = { [ styles . textLabelSupporting , styles . lh16 , styles . pre ] }
107
+ isDisabled = { isDisabled }
108
+ onSelectRow = { ( ) => onSelectRow ( item ) }
109
+ showTooltip = { showTooltip }
110
+ />
111
+ ) : (
112
+ < UserListItem
113
+ item = { item }
114
+ textStyles = { [
115
+ styles . optionDisplayName ,
116
+ isFocused ? styles . sidebarLinkActiveText : styles . sidebarLinkText ,
117
+ styles . sidebarLinkTextBold ,
118
+ styles . pre ,
119
+ item . alternateText ? styles . mb1 : null ,
120
+ ] }
121
+ alternateTextStyles = { [ styles . textLabelSupporting , styles . lh16 , styles . pre ] }
122
+ isDisabled = { isDisabled }
123
+ onSelectRow = { ( ) => onSelectRow ( item ) }
124
+ showTooltip = { showTooltip }
125
+ />
126
+ ) }
117
127
{ ! canSelectMultiple && item . isSelected && ! rightHandSideComponent && (
118
128
< View
119
129
style = { [ styles . flexRow , styles . alignItemsCenter , styles . ml3 ] }
@@ -129,7 +139,7 @@ function BaseListItem({
129
139
) }
130
140
{ rightHandSideComponentRender ( ) }
131
141
</ View >
132
- { Boolean ( item . invitedSecondaryLogin ) && (
142
+ { ! ! item . invitedSecondaryLogin && (
133
143
< Text style = { [ styles . ml9 , styles . ph5 , styles . pb3 , styles . textLabelSupporting ] } >
134
144
{ translate ( 'workspace.people.invitedBySecondaryLogin' , { secondaryLogin : item . invitedSecondaryLogin } ) }
135
145
</ Text >
@@ -140,6 +150,5 @@ function BaseListItem({
140
150
}
141
151
142
152
BaseListItem . displayName = 'BaseListItem' ;
143
- BaseListItem . propTypes = baseListItemPropTypes ;
144
153
145
154
export default BaseListItem ;
0 commit comments