import React from 'react'; import { useTranslation } from 'react-i18next'; import { Text, View, ViewStyle } from 'react-native'; import { IconRecordAccount, IconRecordContact, IconRecordLead, IconRecordOpportunity } from '../../../base/icons/svg'; import { BUTTON_TYPES } from '../../../base/ui/constants.native'; import { formatAmount } from '../../functions'; import { IAccountMatch, IContactMatch, ILeadMatch, IOpportunityMatch, ISearchResults, SalesforceObjectType } from '../../types'; import { RecordListItem } from './RecordListItem'; import styles from './styles'; interface IProps { linkingId: string | null; onLink: (type: SalesforceObjectType, data: IAccountMatch | ILeadMatch | IContactMatch | IOpportunityMatch) => void; results: ISearchResults; } /** * Component for displaying Salesforce search results with link buttons. * * @param {IProps} props - Component props. * @returns {React.ReactElement} */ export const SearchResultsSection = ({ results, linkingId, onLink }: IProps) => { const { t } = useTranslation(); const hasResults = results.accounts.length || results.leads.length || results.contacts.length || results.opportunities.length; if (!hasResults) { return ( {t('dialog.searchResultsNotFound')} ); } return ( {!!results.accounts.length && ( <> {t('record.type.account')} {results.accounts.map(account => ( onLink('Account', account) } /> ))} )} {!!results.leads.length && ( <> {t('record.type.lead')} {results.leads.map(lead => ( onLink('Lead', lead) } /> ))} )} {!!results.contacts.length && ( <> {t('record.type.contact')} {results.contacts.map(contact => ( onLink('Contact', contact) } /> ))} )} {!!results.opportunities.length && ( <> {t('record.type.opportunity')} {results.opportunities.map(opp => ( onLink('Opportunity', opp) } /> ))} )} ); }; export default SearchResultsSection;