diff --git a/native/chat/sidebar-item.react.js b/native/chat/sidebar-item.react.js index f1f1dde90..c8a110718 100644 --- a/native/chat/sidebar-item.react.js +++ b/native/chat/sidebar-item.react.js @@ -1,58 +1,83 @@ // @flow import * as React from 'react'; import { Text, View } from 'react-native'; import type { SidebarInfo } from 'lib/types/thread-types.js'; import { shortAbsoluteDate } from 'lib/utils/date-utils.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import SingleLine from '../components/single-line.react.js'; import { useStyles } from '../themes/colors.js'; type Props = { +sidebarInfo: SidebarInfo, }; function SidebarItem(props: Props): React.Node { const { lastUpdatedTime } = props.sidebarInfo; - const lastActivity = shortAbsoluteDate(lastUpdatedTime); + + const lastActivity = React.useMemo( + () => shortAbsoluteDate(lastUpdatedTime), + [lastUpdatedTime], + ); const { threadInfo } = props.sidebarInfo; const { uiName } = useResolvedThreadInfo(threadInfo); const styles = useStyles(unboundStyles); const unreadStyle = threadInfo.currentUser.unread ? styles.unread : null; - return ( - - {uiName} - {lastActivity} - + const singleLineStyle = React.useMemo( + () => [styles.name, unreadStyle], + [styles.name, unreadStyle], + ); + + const lastActivityStyle = React.useMemo( + () => [styles.lastActivity, unreadStyle], + [styles.lastActivity, unreadStyle], ); + + const sidebarItem = React.useMemo( + () => ( + + {uiName} + {lastActivity} + + ), + [ + lastActivity, + lastActivityStyle, + singleLineStyle, + styles.itemContainer, + uiName, + ], + ); + + return sidebarItem; } const sidebarHeight = 30; const unboundStyles = { itemContainer: { flexDirection: 'row', height: sidebarHeight, alignItems: 'center', }, unread: { color: 'listForegroundLabel', fontWeight: 'bold', }, name: { color: 'listForegroundSecondaryLabel', flex: 1, fontSize: 16, paddingLeft: 3, paddingBottom: 2, }, lastActivity: { color: 'listForegroundTertiaryLabel', fontSize: 14, marginLeft: 10, }, }; export { SidebarItem, sidebarHeight };