11import AppMargin from "../../components/AppMargin" ;
2- import { Box , Button , Grid2 , Tab , Tabs } from "@mui/material" ;
2+ import { Badge , Box , Button , Grid2 , Tab , Tabs } from "@mui/material" ;
33import classes from "./index.module.css" ;
44import { CompilerResult , useCollab } from "../../contexts/CollabContext" ;
55import { useMatch } from "../../contexts/MatchContext" ;
@@ -41,6 +41,7 @@ const CollabSandbox: React.FC = () => {
4141 const [ state , dispatch ] = useReducer ( reducer , initialState ) ;
4242 const { selectedQuestion } = state ;
4343 const [ selectedTab , setSelectedTab ] = useState < "tests" | "chat" > ( "tests" ) ;
44+ const [ hasNewMessage , setHasNewMessage ] = useState < boolean > ( false ) ;
4445 const [ selectedTestcase , setSelectedTestcase ] = useState ( 0 ) ;
4546 const [ editorState , setEditorState ] = useState < CollabSessionData | null > (
4647 null
@@ -169,7 +170,10 @@ const CollabSandbox: React.FC = () => {
169170 >
170171 < Tabs
171172 value = { selectedTab }
172- onChange = { ( _ , value ) => setSelectedTab ( value ) }
173+ onChange = { ( _ , value ) => {
174+ setSelectedTab ( value ) ;
175+ setHasNewMessage ( false ) ;
176+ } }
173177 sx = { ( theme ) => ( {
174178 position : "sticky" ,
175179 top : 0 ,
@@ -179,7 +183,19 @@ const CollabSandbox: React.FC = () => {
179183 } ) }
180184 >
181185 < Tab label = "Test Cases" value = "tests" />
182- < Tab label = "Chat" value = "chat" />
186+
187+ < Tab
188+ label = {
189+ < Badge
190+ color = "primary"
191+ variant = "dot"
192+ invisible = { ! hasNewMessage || selectedTab === "chat" }
193+ >
194+ Chat
195+ </ Badge >
196+ }
197+ value = "chat"
198+ />
183199 </ Tabs >
184200
185201 < TabPanel value = { selectedTab } selected = "tests" >
@@ -211,7 +227,10 @@ const CollabSandbox: React.FC = () => {
211227 />
212228 </ TabPanel >
213229 < TabPanel value = { selectedTab } selected = "chat" >
214- < Chat isActive = { selectedTab === "chat" } />
230+ < Chat
231+ setHasNewMessage = { setHasNewMessage }
232+ isActive = { selectedTab === "chat" }
233+ />
215234 </ TabPanel >
216235 </ Box >
217236 </ Grid2 >
0 commit comments