@@ -26,11 +26,6 @@ export default function SearchPage({
2626 const initialData = useMemo ( ( ) => {
2727 return data ?. filter ( ( item ) => item . id !== myId && item . id !== 0 ) ?? null ;
2828 } , [ data , myId ] ) ;
29- const users = query
30- ? initialData ?. filter ( ( user ) =>
31- user . name . toLowerCase ( ) . includes ( query . toLowerCase ( ) ) ,
32- )
33- : initialData ;
3429
3530 const {
3631 state : { data : matches } ,
@@ -46,26 +41,21 @@ export default function SearchPage({
4641 ! matches ?. some ( ( match ) => match . id === userId ) &&
4742 ! pending ?. some ( ( pending ) => pending . id === userId ) ;
4843
49- const [ searchQuery__interest , setSearchQuery__interest ] = useState <
50- string | null
51- > ( null ) ;
52- setSearchQuery__interest ; // TODO: use this in some UI
53-
54- const filteredUsers = users
55- // this is O(count(users) * count(avg(count(interests))) * count(avg(len(interests.name)))). very bad.
56- ?. filter (
57- ( u ) =>
58- searchQuery__interest === null ||
59- u . interestSubjects . some ( ( i ) => i . name . includes ( searchQuery__interest ) ) ,
60- ) ;
44+ // this is very expensive. someone fix this pls
45+ const users = initialData ?. filter (
46+ ( user ) =>
47+ query === "" ||
48+ user . name . includes ( query ) ||
49+ user . interestSubjects . some ( ( i ) => i . name . includes ( query ) ) ,
50+ ) ;
6151
6252 return (
6353 < div className = "flex min-h-screen justify-center " >
6454 < div className = "w-full" >
6555 < h2 className = "m-5 mb-4 font-bold text-2xl" > ユーザー検索</ h2 >
6656 < Search placeholder = "検索" setSearchString = { setQuery } />
67- { filteredUsers ? (
68- < Table users = { filteredUsers } canRequest = { canRequest } />
57+ { users ? (
58+ < Table users = { users } canRequest = { canRequest } />
6959 ) : (
7060 < FullScreenCircularProgress />
7161 ) }
0 commit comments