@@ -14,6 +14,11 @@ import useClickAway from '../utils/useClickAway';
1414import EmojiPicker from './EmojiPicker' ;
1515import EmojiToolTip from './EmojiTooltip' ;
1616
17+ import BadWordsNext from 'bad-words-next' ;
18+ import en from 'bad-words-next/lib/en' ;
19+ import ru from 'bad-words-next/lib/ru' ;
20+ import rl from 'bad-words-next/lib/ru_lat' ;
21+
1722const MAX_MESSAGE_LENGTH = 1024 ;
1823
1924const trimColons = message => message . slice ( 0 , message . lastIndexOf ( ':' ) ) ;
@@ -34,6 +39,11 @@ export default function ChatInput({ inputRef, disabled = false }) {
3439 const [ text , setText ] = useState ( '' ) ;
3540 const activeRoom = useSelector ( selectors . activeRoomSelector ) ;
3641
42+ const badwords = new BadWordsNext ( )
43+ badwords . add ( en ) ;
44+ badwords . add ( ru ) ;
45+ badwords . add ( rl ) ;
46+
3747 const isMessageBlank = ! text . trim ( ) ;
3848
3949 const handleChange = async ( { target : { value } } ) => {
@@ -48,8 +58,9 @@ export default function ChatInput({ inputRef, disabled = false }) {
4858
4959 const handleSubmit = e => {
5060 e . preventDefault ( ) ;
61+ const filteredText = badwords . filter ( text ) ;
5162 const message = {
52- text ,
63+ filteredText ,
5364 meta : {
5465 type : activeRoom . targetUserId ? messageTypes . private : messageTypes . general ,
5566 targetUserId : activeRoom . targetUserId ,
0 commit comments