MCPcopy Create free account
hub / github.com/TheOrcDev/orcish-fullstack-admin / Users

Function Users

app/admin/users/page.tsx:22–89  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

20const DEFAULT_TOTAL_ITEMS = 7;
21
22export default function Users() {
23 const [users, setUsers] = useState<GetUsersResponse>({
24 items: [],
25 totalPages: 1,
26 });
27 const [isLoading, setIsLoading] = useState<boolean>(false);
28 const searchParams = useSearchParams();
29
30 const [currentSearch, setCurrentSearch] = useQueryState("search", {
31 defaultValue: "",
32 });
33 const [page, setPage] = useQueryState("page", parseAsInteger.withDefault(1));
34 const [totalItems, setTotalItems] = useQueryState(
35 "totalItems",
36 parseAsInteger.withDefault(0)
37 );
38
39 const search = searchParams.get("search");
40
41 // TODO: Remove this useEffect, use new hooks
42 useEffect(() => {
43 const fetchUsers = async () => {
44 setIsLoading(true);
45 const users = await getUsers({
46 page: page < 1 ? DEFAULT_PAGE : page,
47 totalItems: totalItems < 1 ? DEFAULT_TOTAL_ITEMS : totalItems,
48 search,
49 });
50 setUsers(users);
51 setIsLoading(false);
52 };
53
54 fetchUsers();
55 }, [search, page, totalItems]);
56
57 return (
58 <div className="m-10 flex flex-col gap-5">
59 <div className="flex justify-between gap-3 w-full">
60 <div>
61 <Input
62 value={currentSearch}
63 placeholder="Search"
64 onChange={(e) => setCurrentSearch(e.target.value)}
65 />
66 </div>
67
68 <Select onValueChange={(value) => setTotalItems(parseInt(value))}>
69 <SelectTrigger className="w-[180px]">
70 <SelectValue placeholder="Total Items" />
71 </SelectTrigger>
72 <SelectContent>
73 <SelectItem value="5">5</SelectItem>
74 <SelectItem value="10">10</SelectItem>
75 <SelectItem value="20">20</SelectItem>
76 <SelectItem value="50">50</SelectItem>
77 </SelectContent>
78 </Select>
79 </div>

Callers

nothing calls this directly

Calls 1

fetchUsersFunction · 0.85

Tested by

no test coverage detected