forked from GetStream/stream-chat-react
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathThreadHeader.tsx
More file actions
55 lines (48 loc) · 1.77 KB
/
ThreadHeader.tsx
File metadata and controls
55 lines (48 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import React from 'react';
import {
ChannelPreviewInfoParams,
useChannelPreviewInfo,
} from '../ChannelPreview/hooks/useChannelPreviewInfo';
import { CloseIcon } from './icons';
import { StreamMessage, useChannelStateContext } from '../../context/ChannelStateContext';
import { useTranslationContext } from '../../context/TranslationContext';
import type { DefaultStreamChatGenerics } from '../../types/types';
export type ThreadHeaderProps<
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
> = {
/** Callback for closing the thread */
closeThread: (event?: React.BaseSyntheticEvent) => void;
/** The thread parent message */
thread: StreamMessage<StreamChatGenerics>;
};
export const ThreadHeader = <
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
>(
props: ThreadHeaderProps<StreamChatGenerics> &
Pick<ChannelPreviewInfoParams<StreamChatGenerics>, 'overrideImage' | 'overrideTitle'>,
) => {
const { closeThread, overrideImage, overrideTitle } = props;
const { t } = useTranslationContext('ThreadHeader');
const { channel } = useChannelStateContext<StreamChatGenerics>('');
const { displayTitle } = useChannelPreviewInfo({
channel,
overrideImage,
overrideTitle,
});
return (
<div className='str-chat__thread-header'>
<div className='str-chat__thread-header-details'>
<div className='str-chat__thread-header-title'>{t<string>('Thread')}</div>
<div className='str-chat__thread-header-subtitle'>{displayTitle}</div>
</div>
<button
aria-label={t('aria/Close thread')}
className='str-chat__close-thread-button'
data-testid='close-button'
onClick={closeThread}
>
<CloseIcon />
</button>
</div>
);
};