From a16dbd5a0c92325b94553d5aaf182f2852d1b737 Mon Sep 17 00:00:00 2001 From: Rafail6666 Date: Fri, 4 Apr 2025 23:21:14 +0500 Subject: [PATCH] add lib bad-words-next, filter bad words for en and ru lang --- .../assets/js/widgets/components/ChatInput.jsx | 13 ++++++++++++- services/app/apps/codebattle/package.json | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/services/app/apps/codebattle/assets/js/widgets/components/ChatInput.jsx b/services/app/apps/codebattle/assets/js/widgets/components/ChatInput.jsx index bbfcb4b61..7042702f2 100644 --- a/services/app/apps/codebattle/assets/js/widgets/components/ChatInput.jsx +++ b/services/app/apps/codebattle/assets/js/widgets/components/ChatInput.jsx @@ -14,6 +14,11 @@ import useClickAway from '../utils/useClickAway'; import EmojiPicker from './EmojiPicker'; import EmojiToolTip from './EmojiTooltip'; +import BadWordsNext from 'bad-words-next'; +import en from 'bad-words-next/lib/en'; +import ru from 'bad-words-next/lib/ru'; +import rl from 'bad-words-next/lib/ru_lat'; + const MAX_MESSAGE_LENGTH = 1024; const trimColons = message => message.slice(0, message.lastIndexOf(':')); @@ -34,6 +39,11 @@ export default function ChatInput({ inputRef, disabled = false }) { const [text, setText] = useState(''); const activeRoom = useSelector(selectors.activeRoomSelector); + const badwords = new BadWordsNext() + badwords.add(en); + badwords.add(ru); + badwords.add(rl); + const handleChange = async ({ target: { value } }) => { if (value.length > MAX_MESSAGE_LENGTH) { setMaxLengthExceeded(true); @@ -46,8 +56,9 @@ export default function ChatInput({ inputRef, disabled = false }) { const handleSubmit = e => { e.preventDefault(); + const filteredText = badwords.filter(text); const message = { - text, + filteredText, meta: { type: activeRoom.targetUserId ? messageTypes.private : messageTypes.general, targetUserId: activeRoom.targetUserId, diff --git a/services/app/apps/codebattle/package.json b/services/app/apps/codebattle/package.json index be4927ea4..4368048f1 100644 --- a/services/app/apps/codebattle/package.json +++ b/services/app/apps/codebattle/package.json @@ -56,6 +56,7 @@ "@xstate/react": "^3.2.2", "@xstate/test": "^1.0.0-alpha.1", "axios": "^1.6.0", + "bad-words-next": "^3.1.1", "bootstrap": "^4.6.2", "calcite-react": "^0.56.2", "chart.js": "^4.4.3",