Chats: format content, fixes #382, related #380

This commit is contained in:
Alex Gleason 2020-09-03 14:11:33 -05:00
parent 2db5c67a49
commit 57fc08771c
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 26 additions and 5 deletions

View File

@ -40,11 +40,24 @@ class ChatBox extends ImmutablePureComponent {
content: '',
}
handleKeyDown = (e) => {
sendMessage = () => {
const { chatId } = this.props;
if (e.key === 'Enter') {
this.props.dispatch(sendChatMessage(chatId, this.state));
this.setState({ content: '' });
if (this.state.content.length < 1) return;
this.props.dispatch(sendChatMessage(chatId, this.state));
this.setState({ content: '' });
}
insertLine = () => {
const { content } = this.state;
this.setState({ content: content + '\n' });
}
handleKeyDown = (e) => {
if (e.key === 'Enter' && e.shiftKey) {
this.insertLine();
e.preventDefault();
} else if (e.key === 'Enter') {
this.sendMessage();
e.preventDefault();
}
}

View File

@ -7,6 +7,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import emojify from 'soapbox/features/emoji/emoji';
import classNames from 'classnames';
import { escape } from 'lodash';
const makeEmojiMap = record => record.get('emojis', ImmutableList()).reduce((map, emoji) => {
return map.set(`:${emoji.get('shortcode')}:`, emoji);
@ -76,9 +77,16 @@ class ChatMessageList extends ImmutablePureComponent {
this.scrollToBottom();
}
parsePendingContent = content => {
return escape(content).replace(/(?:\r\n|\r|\n)/g, '<br>');
}
parseContent = chatMessage => {
const content = chatMessage.get('content') || '';
const pending = chatMessage.get('pending', false);
const formatted = pending ? this.parsePendingContent(content) : content;
const emojiMap = makeEmojiMap(chatMessage);
return emojify(chatMessage.get('content') || '', emojiMap.toJS());
return emojify(formatted, emojiMap.toJS());
}
render() {