Skip to content

Commit 30890a7

Browse files
committed
Implemented logic imported in friend search page for searching users
1 parent aef6d9f commit 30890a7

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// src/pages/user_dashboard.tsx (Update the import path)
2+
//import "";
3+
import { useEffect,useState } from "react";
4+
5+
import { searchUsers } from "../../../lib/api/friends";
6+
import FriendAddItemModal from "../popups/user_friends_add_popup";
7+
8+
export type OtherUsers = {
9+
id: number;
10+
username: string;
11+
is_me: boolean;
12+
is_friend: boolean;
13+
request_sent: boolean;
14+
request_received: boolean;
15+
};
16+
17+
const UserFriendsAddTable = () => {
18+
const [selectedItem, setSelectedItem] = useState<OtherUsers | null>(null);
19+
const [query, setQuery] = useState("");
20+
// const [isModalOpen, setIsModalOpen] = useState(false);
21+
22+
// Mock data (replace with Django API call later)
23+
const [users, SetUsers] = useState<OtherUsers[]>([]);
24+
// Mock data (replace with Django API call later)
25+
useEffect(() => {
26+
if (!query) {
27+
SetUsers([]);
28+
return;
29+
}
30+
const timeout = setTimeout(() => {
31+
searchUsers(query).then((res) => SetUsers(res.data));
32+
}, 300);
33+
return () => clearTimeout(timeout);
34+
}, [query]);
35+
36+
return (
37+
<>
38+
<input
39+
className="mb-2 w-full border p-2"
40+
placeholder="Search users..."
41+
value={query}
42+
onChange={(e) => setQuery(e.target.value)}
43+
/>
44+
45+
<div className="max-h-[400px] overflow-y-auto rounded border">
46+
{users.map((u) => (
47+
<div
48+
key={u.id}
49+
onClick={() => setSelectedItem(u)}
50+
className="flex cursor-pointer justify-between px-3 py-2 hover:bg-gray-100"
51+
>
52+
<span>{u.username}</span>
53+
{u.is_friend && <span className="text-green-600">Friend</span>}
54+
{u.request_sent && (
55+
<span className="text-yellow-600">Requested</span>
56+
)}
57+
{u.request_received && (
58+
<span className="text-blue-600">Sent you a request</span>
59+
)}
60+
</div>
61+
))}
62+
</div>
63+
64+
{selectedItem && (
65+
<FriendAddItemModal
66+
user={selectedItem}
67+
onClose={() => setSelectedItem(null)}
68+
/>
69+
)}
70+
</>
71+
);
72+
};
73+
export default UserFriendsAddTable;

0 commit comments

Comments
 (0)