Skip to content

Commit e1091a8

Browse files
committed
refactor(code-review): extract comment filter submenu
Generated-By: PostHog Code Task-Id: 199c1147-fca6-415b-9ea1-00a45d9b7267
1 parent 3b4c69f commit e1091a8

2 files changed

Lines changed: 73 additions & 40 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import {
2+
DropdownMenuItem,
3+
DropdownMenuRadioGroup,
4+
DropdownMenuRadioItem,
5+
DropdownMenuSeparator,
6+
DropdownMenuSub,
7+
DropdownMenuSubContent,
8+
DropdownMenuSubTrigger,
9+
} from "@posthog/quill";
10+
import type { CommentFileFilter } from "../commentFileFilter";
11+
12+
interface CommentFilterSubmenuProps {
13+
commentedFileCount: number;
14+
unresolvedCommentedFileCount: number;
15+
commentFilter: CommentFileFilter;
16+
onCommentFilterChange: (filter: CommentFileFilter) => void;
17+
}
18+
19+
function getCommentFilterSuffix(commentFilter: CommentFileFilter): string {
20+
switch (commentFilter) {
21+
case "commented":
22+
return " · All";
23+
case "unresolved":
24+
return " · Unresolved";
25+
case "none":
26+
return "";
27+
}
28+
}
29+
30+
export function CommentFilterSubmenu({
31+
commentedFileCount,
32+
unresolvedCommentedFileCount,
33+
commentFilter,
34+
onCommentFilterChange,
35+
}: CommentFilterSubmenuProps) {
36+
return (
37+
<DropdownMenuSub>
38+
<DropdownMenuSubTrigger>
39+
Comment filter{getCommentFilterSuffix(commentFilter)}
40+
</DropdownMenuSubTrigger>
41+
<DropdownMenuSubContent side="right" sideOffset={4}>
42+
<DropdownMenuRadioGroup
43+
value={commentFilter === "none" ? "" : commentFilter}
44+
onValueChange={(value) =>
45+
onCommentFilterChange(value as CommentFileFilter)
46+
}
47+
>
48+
<DropdownMenuRadioItem value="commented">
49+
All comments ({commentedFileCount})
50+
</DropdownMenuRadioItem>
51+
<DropdownMenuRadioItem value="unresolved">
52+
Unresolved comments ({unresolvedCommentedFileCount})
53+
</DropdownMenuRadioItem>
54+
</DropdownMenuRadioGroup>
55+
{commentFilter !== "none" && (
56+
<>
57+
<DropdownMenuSeparator />
58+
<DropdownMenuItem onClick={() => onCommentFilterChange("none")}>
59+
Clear comment filter
60+
</DropdownMenuItem>
61+
</>
62+
)}
63+
</DropdownMenuSubContent>
64+
</DropdownMenuSub>
65+
);
66+
}

packages/ui/src/features/code-review/components/DiffSettingsMenu.tsx

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@ import {
44
DropdownMenu,
55
DropdownMenuContent,
66
DropdownMenuItem,
7-
DropdownMenuRadioGroup,
8-
DropdownMenuRadioItem,
97
DropdownMenuSeparator,
10-
DropdownMenuSub,
11-
DropdownMenuSubContent,
12-
DropdownMenuSubTrigger,
138
DropdownMenuTrigger,
149
} from "@posthog/quill";
1510
import { useDiffViewerStore } from "@posthog/ui/features/code-editor/diffViewerStore";
1611
import type { CommentFileFilter } from "../commentFileFilter";
12+
import { CommentFilterSubmenu } from "./CommentFilterSubmenu";
1713

1814
interface DiffSettingsMenuProps {
1915
commentedFileCount: number;
@@ -87,41 +83,12 @@ export function DiffSettingsMenu({
8783
{showReviewComments ? "Hide review comments" : "Show review comments"}
8884
</DropdownMenuItem>
8985
{showReviewComments && onCommentFilterChange && (
90-
<DropdownMenuSub>
91-
<DropdownMenuSubTrigger>
92-
Comment filter
93-
{commentFilter === "commented"
94-
? " · All"
95-
: commentFilter === "unresolved"
96-
? " · Unresolved"
97-
: ""}
98-
</DropdownMenuSubTrigger>
99-
<DropdownMenuSubContent side="right" sideOffset={4}>
100-
<DropdownMenuRadioGroup
101-
value={commentFilter === "none" ? "" : commentFilter}
102-
onValueChange={(value) =>
103-
onCommentFilterChange(value as CommentFileFilter)
104-
}
105-
>
106-
<DropdownMenuRadioItem value="commented">
107-
All comments ({commentedFileCount})
108-
</DropdownMenuRadioItem>
109-
<DropdownMenuRadioItem value="unresolved">
110-
Unresolved comments ({unresolvedCommentedFileCount})
111-
</DropdownMenuRadioItem>
112-
</DropdownMenuRadioGroup>
113-
{commentFilter !== "none" && (
114-
<>
115-
<DropdownMenuSeparator />
116-
<DropdownMenuItem
117-
onClick={() => onCommentFilterChange("none")}
118-
>
119-
Clear comment filter
120-
</DropdownMenuItem>
121-
</>
122-
)}
123-
</DropdownMenuSubContent>
124-
</DropdownMenuSub>
86+
<CommentFilterSubmenu
87+
commentedFileCount={commentedFileCount}
88+
unresolvedCommentedFileCount={unresolvedCommentedFileCount}
89+
commentFilter={commentFilter}
90+
onCommentFilterChange={onCommentFilterChange}
91+
/>
12592
)}
12693
</DropdownMenuContent>
12794
</DropdownMenu>

0 commit comments

Comments
 (0)