MCPcopy Index your code
hub / github.com/coder/coder / useUserFilterMenu

Function useUserFilterMenu

site/src/components/Filter/UserFilter.tsx:14–81  ·  view source on GitHub ↗
({
	value,
	onChange,
	enabled,
}: Pick<UseFilterMenuOptions, "value" | "onChange" | "enabled">)

Source from the content-addressed store, hash-verified

12export const DEFAULT_USER_FILTER_WIDTH = 175;
13
14export const useUserFilterMenu = ({
15 value,
16 onChange,
17 enabled,
18}: Pick<UseFilterMenuOptions, "value" | "onChange" | "enabled">) => {
19 const { user: me } = useAuthenticated();
20
21 const addMeAsFirstOption = (options: readonly SelectFilterOption[]) => {
22 const filtered = options.filter((o) => o.value !== me.username);
23 return [
24 {
25 label: me.username,
26 value: me.username,
27 startIcon: (
28 <Avatar fallback={me.username} src={me.avatar_url} size="sm" />
29 ),
30 },
31 ...filtered,
32 ];
33 };
34
35 return useFilterMenu({
36 onChange,
37 enabled,
38 value,
39 id: "owner",
40 getSelectedOption: async () => {
41 if (value === "me") {
42 return {
43 label: me.username,
44 value: me.username,
45 startIcon: (
46 <Avatar fallback={me.username} src={me.avatar_url} size="sm" />
47 ),
48 };
49 }
50
51 const usersRes = await API.getUsers({ q: value, limit: 1 });
52 const firstUser = usersRes.users.at(0);
53 if (firstUser && firstUser.username === value) {
54 return {
55 label: firstUser.username,
56 value: firstUser.username,
57 startIcon: (
58 <Avatar
59 fallback={firstUser.username}
60 src={firstUser.avatar_url}
61 size="sm"
62 />
63 ),
64 };
65 }
66 return null;
67 },
68 getOptions: async (query) => {
69 const usersRes = await API.getUsers({ q: query, limit: 25 });
70 let options = usersRes.users.map<SelectFilterOption>((user) => ({
71 label: user.username,

Callers 6

ConnectionLogPageFunction · 0.90
AuditPageFunction · 0.90
RequestLogsPageFunction · 0.90
AISessionListPageFunction · 0.90
useWorkspacesFilterFunction · 0.90
useTemplatesFilterFunction · 0.90

Calls 3

useAuthenticatedFunction · 0.90
useFilterMenuFunction · 0.90
addMeAsFirstOptionFunction · 0.85

Tested by

no test coverage detected