/* * Wire * Copyright (C) 2018 Wire Swiss GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * */ import React from 'react'; import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import {Avatar, AVATAR_SIZE} from 'Components/Avatar'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {handleKeyDown} from 'Util/KeyboardUtil'; import {formatDateShort} from 'Util/TimeUtil'; import type {ContentMessage} from '../../../../../entity/message/ContentMessage'; import type {Text} from '../../../../../entity/message/Text'; interface FullSearchItemProps { formatText: (text: string) => {matches: number; parts: string[]}; message: ContentMessage; onClick: () => void; } const FullSearchItem: React.FC = ({message, onClick, formatText}) => { const {user, timestamp} = useKoSubscribableChildren(message, ['user', 'timestamp']); const {name} = useKoSubscribableChildren(user, ['name']); const {parts, matches} = formatText((message.getFirstAsset() as Text).text); return (
handleKeyDown(e, onClick)} data-uie-name="full-search-item" >
{parts.map((part, index) => index % 2 ? ( {part} ) : ( part ), )}
{name} {` ${formatDateShort(timestamp)}`}
{matches > 1 && (
{matches.toString()}
)}
); }; export {FullSearchItem};