@@ -15,6 +15,7 @@ import {
1515 Tag ,
1616 Star ,
1717 ArrowUpDown ,
18+ HelpCircle ,
1819} from 'lucide-react' ;
1920import toast from 'react-hot-toast' ;
2021import api from '../services/api' ;
@@ -54,6 +55,7 @@ export default function Problems() {
5455 const type = searchParams . get ( 'type' ) || '' ;
5556 const difficulty = searchParams . get ( 'difficulty' ) || '' ;
5657 const sort = searchParams . get ( 'sort' ) || '' ;
58+ const untried = searchParams . get ( 'untried' ) === 'true' ;
5759 const page = parseInt ( searchParams . get ( 'page' ) || '1' , 10 ) ;
5860
5961 const [ data , setData ] = useState < PaginatedResponse < Problem > | null > ( null ) ;
@@ -115,6 +117,7 @@ export default function Problems() {
115117 if ( difficulty ) params . difficulty = difficulty ;
116118 if ( search ) params . search = search ;
117119 if ( sort ) params . sort = sort ;
120+ if ( untried ) params . untried = 'true' ;
118121
119122 const res = await api . problems . list ( params ) ;
120123 setData ( res ) ;
@@ -343,6 +346,20 @@ export default function Problems() {
343346 仅显示收藏
344347 </ button >
345348
349+ { user && (
350+ < button
351+ onClick = { ( ) => updateParams ( { untried : untried ? '' : 'true' , page : '' } ) }
352+ className = { `inline-flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm transition-colors ${
353+ untried
354+ ? 'bg-violet-600 text-white'
355+ : 'bg-dark-800 text-gray-300 hover:bg-dark-700'
356+ } `}
357+ >
358+ < HelpCircle size = { 14 } />
359+ 仅显示未尝试
360+ </ button >
361+ ) }
362+
346363 < div className = "flex items-center gap-1.5" >
347364 < ArrowUpDown size = { 14 } className = "text-gray-500" />
348365 { sortOptions . map ( ( opt ) => (
0 commit comments