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;