import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { ScrollView, Text, View, ViewStyle } from 'react-native'; import { IconSearch } from '../../../base/icons/svg'; import JitsiScreen from '../../../base/modal/components/JitsiScreen'; import LoadingIndicator from '../../../base/react/components/native/LoadingIndicator'; import { StyleType } from '../../../base/styles/functions.any'; import Input from '../../../base/ui/components/native/Input'; import { useSalesforceLinkDialog } from '../../useSalesforceLinkDialog'; import { CurrentLinksSection } from './CurrentLinksSection'; import { PendingSection } from './PendingSection'; import { SearchResultsSection } from './SearchResultsSection'; import styles from './styles'; /** * Component that renders the Salesforce link dialog. * * @returns {React$Element} */ const SalesforceLinkDialog = () => { const { t } = useTranslation(); const { salesforceData, searchResults, hasSearchResults, hasPendingAccounts, hasPendingDeals, searchTerm, isLoading, isSearching, error, confirmingAccountId, confirmingDealId, rejectingAccounts, rejectingDeals, linkingId, unlinkingId, setSearchTerm, handleConfirmAccount, handleRejectAllAccounts, handleConfirmDeal, handleRejectAllDeals, handleLinkRecord, handleUnlinkRecord } = useSalesforceLinkDialog(); const handleSearchChange = useCallback((value: string) => { setSearchTerm(value); }, [ setSearchTerm ]); const renderSearch = () => ( ); const renderContent = () => { if (isLoading) { return ( ); } return ( {/* Search spinner */} {isSearching && ( )} {/* Search results */} {!isSearching && hasSearchResults && searchResults && ( )} {/* Error (only show when not searching and no results) */} {!isSearching && !hasSearchResults && error && ( {error} )} {/* Pending accounts (when not searching) */} {!searchTerm && hasPendingAccounts && salesforceData?.pendingAccounts && ( )} {/* Pending deals (when not searching) */} {!searchTerm && hasPendingDeals && salesforceData?.pendingDeals && ( )} {/* Current links */} ); }; return ( {renderSearch()} {renderContent()} ); }; export default SalesforceLinkDialog;