react profanity filter

  • Home
  • About us
  • Alarms
  • Contact us
MENU CLOSE back  
That is what we will be using in this tutorial. I think there should be at least a very lax filter, I'm also liking the idea of optional filtering. Once you have filter imported you can use clean function to filter the bad words. You can block certain words from appearing on your Page and turn on the profanity filter. From within the GitHub user interface navigate to Settings, th… It both censors the subtitles and mutes the audio on the appropriate sentence. Alternatively, you can also use our React Native Chat components. Basic Configuration. The UI Kit’s customizable UI components simplify the process of integrating text chat and voice/video calling features to your website or mobile application in a few minutes. The first argument is the function to execute when the data in the dependency is modified and the second argument is an array of dependencies the React.useEffect hook is dependent on. GitHub offers webhooks for many types of events. You also learned how to ban users from sending a message if they continue engaging in their bad behavior after being warned. To use Filter you need to install bad-words dependency and to do that open the terminal and jump into the project using. YouTube videos, streaming music apps, and podcasts are virtually unencumbered by language filters. Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor. But that's where we're going to run the server later on, so it should be fine. To set this up, we have to temporarily comment out the code for adding a member into the channel, and the code for subscribing to it: Once that's complete, you can run the app. Warning the user if profanities are detected in their message. See the Pen React API Search Filter by kero on CodePen. The Real-time Communication API Blog: best practices across in-app chat, push notifications, location tracking and more. One study estimates one in every 13 tweets contains a profanity, with “fuck” making up 34.7 percent of the obscenities used. Once you have filter imported you can use clean function to filter the bad words. Create react application. If returns true it console logs (Bad word found). Alert the user if their message can no longer be sent because 'they're banned. We will be using the Translator Text API from Microsoft Cognitive Services for analyzing text. I was working with a chat app and the requirement was to make a clean social connection with people, here word “clean” means no one should use any offensive language or any word. Because we update the getMessage() function to return the custom field warn_count, 'it's now also available, so we can check for it and issue the corresponding warning: Next, we update the function for sending a message so that it shows an alert when an error response comes back: Lastly, we add the "banned" label to users whose warn_count is greater than two: Next, update the src/screens/Login.js and src/screens/Chat.js file with the ngrok HTTPS URL. profanity-filter. This will be passed as the request body. The event argument contains the typed string value that you can use to filter the source. Then, run one of the following commands: Log in with the user that we will use as the channel creator. Like all other events, you can subscribe to them. A static node.js utility for masking words or phrases in strings that aren't allowed. Open the terminal and go to the workspace and run, Run the following commands to create a new React Native project. That's what the code below does. You can view the full code used in this tutorial on this GitHub repo. The theory is that it takes input from the text area and then uses the .map() and .includes() function to compare. It’s the process of looping through an array and including or excluding elements inside that array based on a condition that you provide. Just like in the server, each message contains the user object. The Translator Text API is part of Microsoft Cognitive Services, a collection of services that brings machine learning capabilities to your apps via a simple API. And even if you’re ready to implement an automated solution, blacklisting profanities won’t cover everything – something will always slip through the cracks. This tutorial also assumes that you already have prior experience working with Stream Chat in React Native. On the 'user's first and second offense, they get an alert that they will get banned if they continue to use colorful language. Profanity today is part and parcel of typical internet language. Profanity similarly achieves the same goal in our lives. Assuming that you have node installed, you can use npm to install the react-native-cli command line utility. This gets triggered when the message is updated on the server. Much like an event, when you subscribe you provide a handler or a callback. Unfortunately, there will always be users who tend toward using profanity within chat. Where the Text is the text that you want to process. The API expects a JSON string containing an array of objects with the Text property. This is a custom value that we're adding to a user if their message has profanities in it. We'll first work on updating the server before we proceed to the actual app. How to Filter Bad Words. Due to the transparency, you can see the dim layer of the background as well. Creating Profanity Filter in React Native is very easy you just have to use bad-words library and it directly provides the clean function. As a developer, there will be a time that will come when you need to moderate this type of behavior. If you use a new username for logging in, the username will automatically be added as a member of the room, and you can send messages with that user. In this tutorial, we'll be looking at how to add automatic profanity filtering and moderation to a chat app using an off-the-shelf Machine Learning solution for analyzing text. Open a GitHub repository that you’re the owner of. How to detect and filter profanity from a real-time chat app, and block a user's IP address when they break your custom rules. In this case, 'we'll be using Translator Text so go ahead and search for it: Click on the first dropdown option that shows up, and you'll be redirected to the following page. Hypixel Christians CHRIST Elder Joined May 16, 2016 Messages 35,728 Reaction score 24,150. To filter bad words you just need to import the dependency and have to create an object of Filter. Fewer things are as satisfying as conducting a symphony of swear words to provoke a reaction. A sample React Native chat app that implements profanity monitoring with WebPurify - anchetaWern/RNChatkitProfanityFilter Redux and React Router) course featured in this preview video. And even if you're ready to implement an automated solution, blacklisting profanities won't cover everything – something will always slip through the cracks. In es6, we got more useful methods in javascript, where one of them is filter() method that help us to filter the particular set of elements from the array. Here's what you'd learn in this lesson: Brian finishes the search functionality by implementing the ability to filter the results. After all, as a company that aims to organise the entire sum of human knowledge, surely Google should have the best profanity list in the world, right? Click the record button to start profiling: Once you’ve started recording, DevTools If you have any doubts or you want to share something about the topic you can comment below or contact us here. It's primarily used for translating text from one language to another. FBP v28.1.2 out now with new “Auto Hide” filter Changes in F.B. Building A Custom Filter; Filter Query Parameter. Currently, the request body is automatically parsed to a JSON object. How to detect and filter profanity from a real-time chat app, and block a user's IP address when they break your custom rules. If you want to filter a$$, then you add it to the filter list. To run the project on an Android Virtual Device or on real debugging device, or on the iOS Simulator by running (macOS only). Consider we have an array of numbers from 1 to 10, but we need only odd numbers from the array. If their warn_count is below 3, we simply increment that number. If you 'don't have another device to test on, hit the following URL to test the receiving of messages: http://localhost:5000/send-message?user_id=THE_USER_ID. Once enabled, we will mark naughty message as “containing profanity” as well as generate a clean message by replacing naughty words with * symbols. He uses the Array.filter method to only return shows that have a title matching the search string entered by the user. This is how you can make Profanity Filter in React Native – To Remove bad words. React Native Stream Chat Profanity Filtering: Middleware config - middleware config in server.js Please use spread operator if you want to use array. At this point, you 'don't have a live URL yet. That way each component only needs to be aware of its "isSelected" status instead of being aware of which filter is currently active. If you are creating any social media app/chat or anything where a user can share something with others then you can use Profanity Filter to clean the bad words. Only if 'it's valid and 'it's triggered because a new message was sent (message.new), do we continue processing the request: Now that we know that the request is valid, we can extract the message from the request body and construct the request to be sent to the Translator Text API. This is supposed to be a profanity filter. You can clean complete list and can start from initial. In this tutorial, you learned how to implement automatic profanity moderation in a chat app created with React Native and Stream Chat. A javascript filter for profanity with the ability to display the first and/or last letters of the blocked word. Copy that and access http://localhost:5000/create-channel?user_id=THE_USER_ID in your browser. Let's assume there's not a clear cause or trigger for the profanity but that it instead appears random and unprovoked. 'We've already added it earlier in the Stream Chat app dashboard as webhooks, so we have to use the same name. They have zero tolerance for discrimination – Chase Florell Apr 12 '16 at 17:37. Execute the following commands on your terminal to set it up: Aside from that, React Native Config also has additional setup necessary. Creating Profanity Filter in React Native is very easy you just have to use bad-words library and it directly provides the clean function. The caveat here is that we’re not actually filtering using React. Think of a webhook as simply being an event. Banned users will still be able to receive messages, but 'they'll also have a "banned" marker next to their name when viewing the members of the room: This section assumes that you already have an existing Stream app instance: Scroll down to the Chat Events section and activate webhooks. Chat / Profanity Filter. The current app has the following features: From the gif above, you can see that profanities are masked using asterisks. To filter bad words you just need to import the dependency and have to create an object of Filter. Log in Register. This header value is sent by 'Stream's server whenever the webhook is triggered. The Real-time Communication API Blog: best practices across in-app chat, push notifications, location tracking and more. If you want to use your own placeholder then you can use placeholder while initialising Filter. To add words in the black list you can pass multiple words in addWords function. Published August 17, 2011 - … Profanity Filter helps you to remove the bad words, it captures the bad words from the sentence and replace it with the placeholder. Specifically, you learned how to use the Translator Text API from Microsoft Cognitive Services to detect profanity in text and obscure them from the user's view. Learn how your comment data is processed. As a developer, there will be a time that will come when you need to moderate this type of behavior. Code To Make Profinity Filter in React Native, Generate SHA256 Encoded Hash in React Native, ‘react-native’ is not recognized as an internal or external command. https://moduscreate.com/blog/ext-js-to-react-load-sort-and-filter-data-with-react There's simply no way you will be able to manually watch all of the chat rooms and ban users because of their bad behavior. Create react application; Example to render an array; Implement search filter; Output; 1. For chat, we'll use Stream Chat along with React Native to create the app, and Gifted Chat to generate the chat UI. There will be more posts coming soon. Overzealous profanity filter bans paleontologists from talking about bones Participants in a virtual paleontology session found themselves caught between a rock and a hard place last week, when a profanity filter prevented them from using certain words – such as bone , pubic , stream and, er, beaver – during an online conference. To enable the Profanity Filter extension, open your dashboard and explore the application for which you would like to enable profanity filtering. Once that's done, you should be able to follow the instructions on the Running the App section so you can try out the basic chat functionality. If you're new to React Native or Stream Chat, be sure to check out my previous tutorial – Using Gifted Chat UI with React Native. That's not going to work because the function provided by Stream's API for verifying whether or not a request came from them requires us to pass the request body as plain text. At this point, you can now test the app. To use this, subtitles in Netflix need to be turned on. From blogs to e-commerce apps and SaaS platforms, whenever you need visitors to find something quickly on your site, you will have to build some form of filter. On the Installed page you can go to Settings and choose to Drop messages with Profanity. Stay tuned! It should ban you after the third offense, and you will no longer be able to send messages. Filter is a JavaScript function that we can perform on an array type object. configuration. If you go over the quota, the API will stop working, and you'll receive a notification to switch to another tier. As a developer, there will be a time that will come when you need to moderate this type of behavior. I’m going to assume that you’re unfamiliar with “webhooks”. What is Filter in React? Since we will be updating an existing app in this tutorial, I've already prepared a starter project which contains all the code of the current app. The profanity filter that I've got posted is "built in order to allow users to "Opt-in" to profanity filtering". But by the time it becomes 3, we ban the user from ever sending a message to any room: Optionally, you can also add a route for unbanning a user. Swear filters by nature are very tempermental, and non-"swear" words often fall victim due to the fact that they have a swear word in them somewhere. This extension filters profanity words in Netflix. However, the speed of conversation leaves no time for manual moderation and requires a real-time profanity filter you can trust. Since we already know that they're replaced as a triple asterisk, we can check if that value is within the text that was returned. Running the app now should also prove useful as you go through this tutorial. swear is an array it includes some bad word. –save is optional, it is just to update the dependency in your package.json file. console.log output) we know that Stream Chat now recognizes the user. The first step is to search for "Cognitive services": Once you're inside Cognitive Services, click on the Add button: This allows you to select the specific Cognitive Services API that you want to use. Let’s start with creating the simple react application with the help of the create-react-app. So will we get muted for swearing still? This site uses Akismet to reduce spam. The React.useEffect hook takes two arguments. Filtering Profanity in Chat with React Native. 3. http://localhost:5000/create-channel?user_id=THE_USER_ID, http://localhost:5000/send-message?user_id=THE_USER_ID, http://localhost:5000/unban?user_id=THE_USER_ID. Much of their content material is shock-worthy, and profanity is a natural reaction to the controversial topics featured. React Native is a rapidly growing native app development framework nowadays and everybody is contributing so many new things in React Native daily, that is why you can see many updates in the components and libraries but don’t worry, I will keep my posts updated. Basic knowledge of React, React Native, and Node.js is required to follow this tutorial. Open the terminal again and jump into your project using. This section assumes that you already have a Microsoft Azure account, and that you're already logged in to the Azure Portal. The filter will filter out most of the profanity, but don't try to avoid it since it is against the rules. To remove any word from blacklist you can use removeWords function. In the server terminal, you should see the user ID outputted in the console. ... sarthakgoenka / React-Chat-Application Star 1 Code Issues Pull requests A Real-time chat app is written in ReactJS with profanity barries and firebase. ... Profanity Filter; Move to … You can also see the quantity remaining for your selected pricing tier. Down beneath, there are various transparent boxes containing some example contents in it which fill in as links. When you see this, click on the create button: That will redirect you to the page for creating the resource. That will create the channel for us. The following package versions were used in creating and testing this tutorial: You will also need to have an account for the following services: In this tutorial, we will update an existing React Native chat app that was built with Stream Chat and Gifted Chat UI. This command will copy all the dependencies into your node_module directory. In this example we will create a simple input which will allow a user to input some sentences which will be filtered using profanity filter, if our filter found any bad word in sentence then it will replace it with * (You can also customise * with whatever you want). This way, we can show a warning when a user receives an updated message (Because an updated message only means one thing: someone in the room has used colorful language): Next, we need to listen to the event when a message is updated. Unfortunately, there will always be users who tend toward using profanity within chat. Brands dealing with explicit material, such as entertainment or news brands, may even tolerate extreme profanity. Way to implement search filter for multiple object. So the map loops over the swear array, picks up each word and see if it is included in the text. DevTools will show a “Profiler” tab for applications that support the new profiling API: The “Profiler” panel will be empty initially. The latter reaction can be applied when the profanity filter finds keywords or triggers that indicate the post is off-topic. A javascript filter for profanity with the ability to display the first and/or last letters of the blocked word. When you press a filter button, you should see its text take on a new outline — this tells you it has been selected. However, our buttons still don't actually filter … I've been at one forum where "assume" was partially censored. To change the filters, react-admin simply changes this filter query parameter, and the components fetches dataProvider.getList() again with the new filters. That way, you can see the results as 'you're adding the code. Advanced Filtering with React and Redux Filtering through objects and text is perhaps one of the most common features any consumer-facing app is going to have. On the third offense, they will get banned from sending messages in all the chat rooms that they're a member of. If it is, then we request Stream Chat's API to update the message with the version where the profanities are already masked with asterisks: The last thing that we need to do is check for the user's warn_count. We are going to use react-native init to make our React Native App. The number of items in this array corresponds to the number of objects you passed in your request body. Unfortunately, there will always be users who tend toward using profanity within chat. In this post we will see an interesting library which help you to create Profanity Filter in React Native – To Remove bad words. Learn more Enable live reload and remote debugging so you can see the console.log output. If you want to start a new project with a specific React Native version, you can use the --version argument: This will make a project structure with an index file named App.js in your project directory. Here is a typical List URL: ... S2eforme Forum Veteran. In the extensions tab, enable the the Profanity Filter with a flick of a switch. Enter the following details: Note that if you don't have an existing resource group, you can click on the Create new link below it and enter its name: Once the resource is created, you'll see something like this: You can view the API key that you can use for making requests by clicking on the Show access keys link. S2eforme. React Native Stream Chat Profanity Filtering: Filter out profanity - filter out profanity in server.js The CometChat React UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly. You can test if the profanity filtering and moderation are working by typing any profanity you can think of. This is where we supply the API key via the header: Next, we need to update the Express middleware that we use, based on whether the x-signature exists in the header or not. This accepts the request body as the first argument and the value of the x-signature header as the second. React-admin uses the filter query parameter from the URL to determine the filters to apply to the list. In this case, we're only working with one text so it's available on the first index. Once the user is logged in, and the code for setting the user is executed (indicated by "user is set!" The informal nature of chat allows users to speak freely making it a valuable community component. The first thing that we need to do is add the axios configuration for making requests to the Translator Text API. On every character input, the component triggers a onFilterChange event. Viewing the list of room members and their online presence. When the event occurs, it calls your handler. There can also be many possible translations, but we'll extract the first one since it's the most accurate: Next, we check if there are profanities in the text. To determine if it did, indeed, come from 'Stream's server, we use the verifyWebhook() function. On the Extensions page simply add the Profanity Filter extension. React.js Search Filter Example Live Preview. Now, we're ready to update the app. Though it also has a nice feature for dealing with profanity in text. Next, you need to update the .env and server/.env file with your Stream Chat and Cognitive Services API key. If you're on the free tier, you won't get charged. There are three methods of replacement, outlined below ('word' requires you specify a replacement for each word): As a developer you can only instruct your users but can’t stop them to use this kind of words in chat so I took the help of Profanity filter. You can block certain words from appearing on your Page and turn on the profanity filter. When the filtering functionality is enabled, the component renders a filter input in the drop-down list. If it responds with "ok", you can go ahead and remove the comments on the code that we commented out earlier! Hashes for profanity_filter-1.3.3-py3-none-any.whl; Algorithm Hash digest; SHA256: 67f9baffb13cb1256dd1b717c56caea2f058ec3bfd8e40024beb7f0fff298f94: Copy But with a webhook, you get a bit more control over how the event is communicated. And if you look at your DevTool’s Page Inspector while clicking the buttons, you'll see the aria-pressed attribute values change accordingly. Also, you can provide the comma separated list of words that you would like to filter. There are a … The options for the request can be given as query parameters: The response that we get back is an array. There’s simply no way you will be able to manually watch all of the chat rooms and ban users because of their bad behavior. If this is the case, and while you may not be able to prevent it, you can choose not to react and become upset by it. Open App.js in any code editor and replace the code with the following code. Once you're done, click on Save to save the changes. If you want to unban a user, you can access http://localhost:5000/unban?user_id=THE_USER_ID to unban them. The Azure Portal helps you to remove the comments on the Installed you. The appropriate sentence they continue engaging in their message can no longer be sent because 're! Finishes the search functionality by implementing the ability to display the first thing that we need only odd numbers the. Reactjs with profanity barries and firebase, then you add it to the Azure Portal from sending in... Do that open the terminal again and jump into the project using applied when the profanity filter finds keywords triggers! T know about how to ban users from sending a message if continue! You to know more about the way you can go to Settings choose... Application for which you would like to filter the bad words verifyWebhook )! The react-native-cli command line utility however, the request body is automatically parsed a. This tutorial on this GitHub repo from Microsoft Cognitive Services for analyzing text chat in React Native, and are... Notifications, location tracking and more to install bad-words dependency and to do that open terminal..., they will get banned from sending messages in all the dependencies into your project using the drop-down.. Brands, May even tolerate extreme profanity by kero on CodePen execute the following commands to create a Native. In order to allow users to speak freely making it a valuable community component be turned on the verifyWebhook )! Will stop working, and that you want to process of filter can from... Server/.Env file with your Stream chat and Cognitive Services for analyzing text blocked word text it! Commented out earlier items in this tutorial also assumes that you 're done, click on first... This case, we simply increment that number to them you provide handler... At least a very react profanity filter filter, i 'm also liking the idea of filtering! Dependency in your request body the comma separated list of words that you already. With one text so it 's best used on a site that allows profanity by default a custom that. The rules options for the request can be applied when the profanity filter helps you to more! Input in the Stream chat now recognizes the user is logged in to the actual app other,! User that we commented out earlier we commented out earlier 'll receive a notification to to. Layer of the following code ; output ; 1 tutorial also assumes that you would like enable! And it directly provides the clean function to filter a $ $, then can... Creating the simple React application ; Example to render an array they will banned. What it says it is against the rules triggered when the profanity filter extension the on... Unencumbered by language filters you subscribe you provide a handler or a.... Native app, there are various transparent boxes containing some Example contents in it which fill in as.. Of conversation leaves no time for manual moderation and requires a Real-time chat app dashboard as webhooks, it. Very lax filter, i 'm also liking the idea of optional.. Very lax filter, i 'm also liking the idea of optional filtering typical internet language application with the features! Is sent by 'Stream 's server, each message contains the user ID outputted in server... Example contents in it setting the user object words that you would like to filter the bad words automatically to. Triggers that indicate the post is off-topic, http: //localhost:5000/create-channel? user_id=THE_USER_ID, http //localhost:5000/create-channel.: //localhost:5000/send-message? user_id=THE_USER_ID to unban a user, you wo n't work corresponds the... Requires a Real-time chat app is written in ReactJS with profanity in text pretty much what it it. Material, such as entertainment or news brands, May even tolerate extreme profanity the resource, each contains. Live URL yet is how you can view the full code used in this tutorial just like in Stream.: from the gif above, you can block certain words from on! On an array of objects with the ability to display the first argument and the code that we ’ the... Be sent because 'they 're banned and mutes the audio on the appropriate.... Creating the simple React application ; Example to render an array it includes bad! The transparency, you should see the dim layer of the following commands: in... From the gif above, you learned how to create an object of filter can the. Filter for profanity with the ability to display the first index the console.log output and replace the with. Filter for profanity with the user is executed ( indicated by `` is. Subscribe to them text so it should be fine of their content material is shock-worthy, and that you have... User when they use profanities and banning them from sending messages in all the rooms... Was partially censored and remove the bad words, it captures the bad you! Built in order to allow users to speak freely making it a valuable component... Command will copy all the dependencies into your node_module directory takes two arguments we will be a time will. Extensions tab, enable the profanity filter with a webhook, you can also see results! By default below 3, we 're only working with one text so it should be at least very... Are n't allowed way, you should see the dim layer of profanity. Header as the second sent because 'they 're banned words or phrases in strings that are n't allowed same.! Add it to the list with React Native project 'm also liking the of. Much of their content material is shock-worthy, and that you ’ re not filtering. 2016 messages 35,728 reaction score 24,150 of React, React Native, and node.js is required to follow tutorial. Custom value that you ’ re not actually filtering using React profanity barries and firebase partially! The following commands: Log in with the placeholder given as query parameters: the response that 're. Messages with profanity user that we ’ re the owner of 're,... The quota, the speed of conversation leaves no time for manual moderation and a! Url yet that 's where we 're ready to update the app wo n't work, node.js! Verifywebhook ( ) function, React Native is very easy you just need to moderate this type of.... Argument contains the user is react profanity filter! it a valuable community component Native and chat. In our lives static node.js utility for masking words or phrases in strings that are react profanity filter allowed have! As conducting a symphony of swear words to provoke a reaction, 'm. Explore the application for which you would like to enable profanity filtering '' percent. 16, 2016 messages 35,728 reaction score 24,150 you have node Installed, wo... Barries and firebase reaction to the controversial topics featured profanity moderation in a lesson further the. User when they use profanities and banning them from sending messages in all the dependencies your. ) function your project using mutes the audio on the code with the help the... Sentence and replace it with the following features: from the sentence and replace the code for the. I 'm also liking the idea of optional filtering flick of a switch something about topic... Just to update the dependency and to do is add the axios configuration for making requests the... First work on updating the server, we 're only working with one text so it 's primarily for... And remote debugging so you can trust satisfying as conducting a symphony of swear to. Finishes the search functionality by implementing the ability to filter bad words, it the... Words from appearing on your terminal to set it up: Aside from that, React Native is easy! The resource, subtitles in Netflix need to update the app thing we! Actually filtering react profanity filter React gif above, you should see the Pen React API search filter ; ;! Make profanity filter that i 've been at one forum where `` assume '' was censored... Onfilterchange event JavaScript filter for profanity with the text is the text is the text you. Chat in React is pretty much what it says it is against the rules you... Are working by typing any profanity you can use to filter the source to... Them from sending messages in all the dependencies into your node_module directory in F.B stop working, and code! Knowledge of React, React Native is very easy you just have to use your placeholder! Are various transparent boxes containing some Example contents in it which fill in links!, we 're going to use array with profanity barries and firebase reaction... Continue engaging in their message can no longer be sent because 'they banned... The speed of conversation leaves no time for manual moderation and requires a Real-time profanity filter react profanity filter React Native dim... Appropriate sentence URL yet can use removeWords function assumes that you already have a Microsoft Azure account and! Get a bit more control over how the event occurs, it captures the bad you... Use spread operator if you want to use bad-words library and it directly provides the clean function a... Featured react profanity filter this lesson: Brian finishes the search string entered by the user is (. Drop-Down list like an event also, you wo n't work the app array of numbers from URL! Value of the obscenities used implementing the ability to display the first and/or last letters of the header. To process pretty much what it says it is included in the drop-down list wo get!
Beyond The Law, As The World Turns Actresses, John Heilemann Wu-tang Connection, 2021 Ford Bronco 2-door Mpg, Tennessee River Run, Al Snow What Does Everybody Want, Early Bronco Body Cart,
react profanity filter 2021