1- import React , { useState } from "react" ;
1+ import React , { useMemo , useState } from "react" ;
22import { List } from "immutable" ;
33import {
44 useContests ,
@@ -21,6 +21,7 @@ import {
2121 classifyContest ,
2222 ContestCategory ,
2323} from "../../utils/ContestClassifier" ;
24+ import { getLikeContestCategory } from "../../utils/LikeContestUtils" ;
2425import { TableTabButtons } from "./TableTab" ;
2526import { Options } from "./Options" ;
2627import { ContestTable } from "./ContestTable" ;
@@ -52,6 +53,10 @@ export const TablePage: React.FC<OuterProps> = (props) => {
5253 "showPenalties" ,
5354 false
5455 ) ;
56+ const [ mergeLikeContest , setMergeLikeContest ] = useLocalStorage (
57+ "MergeLikeContest" ,
58+ false
59+ ) ;
5560 const [ selectedLanguages , setSelectedLanguages ] = useState ( new Set < string > ( ) ) ;
5661 const userRatingInfo = useRatingInfo ( props . userId ) ;
5762 const contestToProblems =
@@ -76,8 +81,21 @@ export const TablePage: React.FC<OuterProps> = (props) => {
7681 filteredSubmissions ,
7782 props . userId
7883 ) ;
79- const filteredContests =
80- contests ?. filter ( ( c ) => classifyContest ( c ) === activeTab ) ?? [ ] ;
84+
85+ const filteredContests = useMemo ( ( ) => {
86+ if ( ! contests ) {
87+ return [ ] ;
88+ }
89+ return contests . filter ( ( contest ) => {
90+ const contestType = classifyContest ( contest ) ;
91+ if ( contestType === activeTab ) {
92+ return true ;
93+ }
94+ return (
95+ mergeLikeContest && getLikeContestCategory ( activeTab ) === contestType
96+ ) ;
97+ } ) ;
98+ } , [ contests , activeTab , mergeLikeContest ] ) ;
8199
82100 return (
83101 < div >
@@ -99,8 +117,14 @@ export const TablePage: React.FC<OuterProps> = (props) => {
99117 newSet . has ( language ) ? newSet . delete ( language ) : newSet . add ( language ) ;
100118 setSelectedLanguages ( newSet ) ;
101119 } }
120+ mergeLikeContest = { mergeLikeContest }
121+ setMergeLikeContest = { setMergeLikeContest }
122+ />
123+ < TableTabButtons
124+ active = { activeTab }
125+ setActive = { setActiveTab }
126+ mergeLikeContest = { mergeLikeContest }
102127 />
103- < TableTabButtons active = { activeTab } setActive = { setActiveTab } />
104128 { [
105129 "ABC" ,
106130 "ARC" ,
0 commit comments