session-desktop/ts/components/SearchResults.tsx

68 lines
2.1 KiB
TypeScript

import React from 'react';
import {
ConversationListItemProps,
MemoConversationListItemWithDetails,
} from './ConversationListItem';
export type SearchResultsProps = {
contacts: Array<ConversationListItemProps>;
conversations: Array<ConversationListItemProps>;
hideMessagesHeader: boolean;
searchTerm: string;
};
const ContactsItem = (props: { header: string; items: Array<ConversationListItemProps> }) => {
return (
<div className="module-search-results__contacts">
<div className="module-search-results__contacts-header">{props.header}</div>
{props.items.map(contact => (
<MemoConversationListItemWithDetails {...contact} />
))}
</div>
);
};
export const SearchResults = (props: SearchResultsProps) => {
const { conversations, contacts, searchTerm } = props;
const haveConversations = conversations && conversations.length;
const haveContacts = contacts && contacts.length;
const noResults = !haveConversations && !haveContacts;
return (
<div className="module-search-results">
{noResults ? (
<div className="module-search-results__no-results">
{window.i18n('noSearchResults', [searchTerm])}
</div>
) : null}
{haveConversations ? (
<div className="module-search-results__conversations">
<div className="module-search-results__conversations-header">
{window.i18n('conversationsHeader')}
</div>
{conversations.map(conversation => (
<MemoConversationListItemWithDetails {...conversation} />
))}
</div>
) : null}
{haveContacts ? (
<ContactsItem header={window.i18n('contactsHeader')} items={contacts} />
) : null}
{/* {haveMessages ? (
<div className="module-search-results__messages">
{hideMessagesHeader ? null : (
<div className="module-search-results__messages-header">
{window.i18n('messagesHeader')}
</div>
)}
{messages.map(message => (
<MessageSearchResult key={message.id} {...message} />
))}
</div>
) : null} */}
</div>
);
};