-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathMessage.tsx
More file actions
52 lines (45 loc) · 1.42 KB
/
Message.tsx
File metadata and controls
52 lines (45 loc) · 1.42 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
import * as React from 'react';
// import Emojify from 'react-emojione';
import StyledMessage from './StyledMessage';
import Nickname from '../Nickname';
import Timestamp from '../Timestamp';
// import MicrolinkCard from '@microlink/react';
import Linkify from 'linkifyjs/react';
import getUrls from 'get-urls';
export interface IMessage {
from: string;
content: string;
time: string;
type: string;
}
class Message extends React.Component<{ message: IMessage }> {
public render() {
const { message } = this.props;
return (
<React.Fragment>
<div id='nickname-container'>
{message.type === 'received' && <Nickname value={message.from}/>}
<Timestamp value={message.time} floatToRight={message.type === 'sent'}/>
</div>
<StyledMessage type={message.type}>
{/*<Linkify><Emojify>{message.content} {this.parseURLs(message.content)}</Emojify></Linkify>*/}
<Linkify>{message.content} {this.parseURLs(message.content)}</Linkify>
</StyledMessage>
</React.Fragment>
);
}
private parseURLs = (text: string) => {
const urls = getUrls(text);
if (!urls.size) {
return;
}
const parsedUrls = Array.from(urls).map((url: string, idx: number) => (
// <MicrolinkCard url={url} key={idx}/>
<div key={idx}>{url}</div>
));
return <React.Fragment>
{parsedUrls}
</React.Fragment>
};
}
export default Message;