Skip to content

Commit 2615768

Browse files
committed
done
1 parent 7c063fa commit 2615768

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

web/components/search/table.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"use client";
2-
import { useMemo } from "react";
2+
import { useMemo, useState } from "react";
33
import request from "~/api/request";
44
import { useAll, useMatched, useMyID, usePendingFromMe } from "~/api/user";
55
import { useModal } from "../common/modal/ModalProvider";
@@ -30,14 +30,29 @@ export default function UserTable({ query }: { query: string }) {
3030
state: { data: pending },
3131
} = usePendingFromMe();
3232

33-
// ユーザーがリクエストを送ってない人だけリストアップする
33+
// リクエストを送ってない人のみリクエスト送信可能
34+
// FIXME: O(n^2) | n = count(users) なのでめっちゃ計算コストかかる。なんとかして。
3435
const canRequest = (userId: number) =>
3536
!matches?.some((match) => match.id === userId) &&
3637
!pending?.some((pending) => pending.id === userId);
3738

39+
const [searchQuery__interest, setSearchQuery__interest] = useState<
40+
string | null
41+
>(null);
42+
setSearchQuery__interest; // TODO: use this in some UI
43+
44+
const filteredUsers = users
45+
// this is O(count(users) * count(avg(count(interests))) * count(avg(len(interests.name)))). very bad.
46+
?.filter(
47+
(u) =>
48+
searchQuery__interest === null ||
49+
u.interestSubjects.some((i) => i.name.includes(searchQuery__interest)),
50+
);
51+
console.log(searchQuery__interest);
52+
3853
return (
3954
<div>
40-
{users?.map((user) => (
55+
{filteredUsers?.map((user) => (
4156
<HumanListItem
4257
key={user.id}
4358
id={user.id}

0 commit comments

Comments
 (0)