@@ -25,7 +25,6 @@ export default function Home() {
2525 setData ( dataList ) ;
2626 setFilteredData ( dataList ) ;
2727 setLoading ( false ) ; // Set loading to false once data is fetched
28-
2928 } ) ;
3029 // Return a cleanup function to unsubscribe from the snapshot listener when the component unmounts
3130 return ( ) => unsubscribe ( ) ;
@@ -37,6 +36,7 @@ export default function Home() {
3736 } ;
3837
3938 getContacts ( ) ;
39+ console . log ( data )
4040 } , [ ] ) ;
4141
4242 const handleSearch = ( query ) => {
@@ -58,6 +58,34 @@ export default function Home() {
5858 return ( ) => clearInterval ( interval ) ;
5959 } , [ ] ) ;
6060
61+ function sortBasedOnQuestions ( ) {
62+ const sortedData = [ ...data ]
63+ sortedData . sort ( ( a , b ) => {
64+ return b . totalSolved - a . totalSolved
65+ } )
66+ setFilteredData ( sortedData )
67+ }
68+
69+ function sortBasedOnDefault ( ) {
70+ setFilteredData ( data )
71+ }
72+
73+ const handleSortChange = ( e ) => {
74+ const selectedOption = e . target . value ;
75+ setSelectedValue ( selectedOption ) ;
76+
77+ if ( selectedOption === 'Sort by Default' ) {
78+ sortBasedOnDefault ( ) ;
79+ } else if ( selectedOption === 'Sort by Questions Solved' ) {
80+ sortBasedOnQuestions ( ) ;
81+ }
82+ } ;
83+
84+
85+
86+ const [ selectedValue , setSelectedValue ] = useState ( 'Only Value' ) ;
87+
88+
6189 return (
6290 < >
6391 < div className = "overflow-x-hidden nunito" >
@@ -71,6 +99,17 @@ export default function Home() {
7199 </ button >
72100 { /* <WorthAlert /> */ }
73101 < Navbar onSearch = { handleSearch } />
102+ < div className = "mt-4 grid place-content-center" >
103+ < select
104+ id = "sortDropdown"
105+ value = { selectedValue }
106+ onChange = { handleSortChange }
107+ className = "mt-1 p-2 border border-gray-300 rounded-md focus:outline-none text-[#FFFEFE] focus:ring focus:border-blue-300"
108+ >
109+ < option value = "Sort by Default" > Sort by Default</ option >
110+ < option value = "Sort by Questions Solved" > Sort by Questions Solved</ option >
111+ </ select >
112+ </ div >
74113 {
75114 loading ? (
76115 < div className = "flex flex-col mx-auto max-w-screen-xl px-2 sm:px-6 lg:px-8" >
@@ -110,7 +149,6 @@ export default function Home() {
110149 </ div >
111150 </ div > )
112151 }
113-
114152 </ div >
115153 { showStats && (
116154 < div className = "modal-overlay" onClick = { ( ) => setShowStats ( false ) } >
0 commit comments