1
1
import 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" ;
3
3
import classes from "./index.module.css" ;
4
4
import { CompilerResult , useCollab } from "../../contexts/CollabContext" ;
5
5
import { useMatch } from "../../contexts/MatchContext" ;
@@ -41,6 +41,7 @@ const CollabSandbox: React.FC = () => {
41
41
const [ state , dispatch ] = useReducer ( reducer , initialState ) ;
42
42
const { selectedQuestion } = state ;
43
43
const [ selectedTab , setSelectedTab ] = useState < "tests" | "chat" > ( "tests" ) ;
44
+ const [ hasNewMessage , setHasNewMessage ] = useState < boolean > ( false ) ;
44
45
const [ selectedTestcase , setSelectedTestcase ] = useState ( 0 ) ;
45
46
const [ editorState , setEditorState ] = useState < CollabSessionData | null > (
46
47
null
@@ -169,7 +170,10 @@ const CollabSandbox: React.FC = () => {
169
170
>
170
171
< Tabs
171
172
value = { selectedTab }
172
- onChange = { ( _ , value ) => setSelectedTab ( value ) }
173
+ onChange = { ( _ , value ) => {
174
+ setSelectedTab ( value ) ;
175
+ setHasNewMessage ( false ) ;
176
+ } }
173
177
sx = { ( theme ) => ( {
174
178
position : "sticky" ,
175
179
top : 0 ,
@@ -179,7 +183,19 @@ const CollabSandbox: React.FC = () => {
179
183
} ) }
180
184
>
181
185
< 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
+ />
183
199
</ Tabs >
184
200
185
201
< TabPanel value = { selectedTab } selected = "tests" >
@@ -211,7 +227,10 @@ const CollabSandbox: React.FC = () => {
211
227
/>
212
228
</ TabPanel >
213
229
< TabPanel value = { selectedTab } selected = "chat" >
214
- < Chat isActive = { selectedTab === "chat" } />
230
+ < Chat
231
+ setHasNewMessage = { setHasNewMessage }
232
+ isActive = { selectedTab === "chat" }
233
+ />
215
234
</ TabPanel >
216
235
</ Box >
217
236
</ Grid2 >
0 commit comments