Skip to content
This repository was archived by the owner on Aug 6, 2026. It is now read-only.

Commit 97cbb64

Browse files
authored
Open review responsively based on window width
Generated-By: PostHog Code Task-Id: 9673d413-a977-441f-8660-553684a946d1
1 parent 7c4e755 commit 97cbb64

7 files changed

Lines changed: 39 additions & 12 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { describe, expect, it } from "vitest";
2+
import {
3+
getDefaultReviewMode,
4+
REVIEW_SPLIT_MIN_WINDOW_WIDTH,
5+
} from "./getDefaultReviewMode";
6+
7+
describe("getDefaultReviewMode", () => {
8+
it.each([
9+
[REVIEW_SPLIT_MIN_WINDOW_WIDTH - 1, "expanded"],
10+
[REVIEW_SPLIT_MIN_WINDOW_WIDTH, "split"],
11+
[REVIEW_SPLIT_MIN_WINDOW_WIDTH + 1, "split"],
12+
] as const)("returns the review mode for a %ipx window", (width, mode) => {
13+
expect(getDefaultReviewMode(width)).toBe(mode);
14+
});
15+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type { ReviewMode } from "./reviewNavigationStore";
2+
3+
export const REVIEW_SPLIT_MIN_WINDOW_WIDTH = 1280;
4+
5+
export function getDefaultReviewMode(
6+
windowWidth = window.innerWidth,
7+
): ReviewMode {
8+
return windowWidth >= REVIEW_SPLIT_MIN_WINDOW_WIDTH ? "split" : "expanded";
9+
}

packages/ui/src/features/code-review/hooks/useDiffStatsToggle.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Task } from "@posthog/shared/domain-types";
22
import { useCallback } from "react";
3-
import type { ReviewMode } from "../reviewNavigationStore";
3+
import { getDefaultReviewMode } from "../getDefaultReviewMode";
44
import { useReviewNavigationStore } from "../reviewNavigationStore";
55
import { useTaskDiffSummaryStats } from "./useTaskDiffSummaryStats";
66

@@ -13,10 +13,7 @@ interface DiffStatsToggleResult {
1313
toggle: () => void;
1414
}
1515

16-
export function useDiffStatsToggle(
17-
task: Task,
18-
openMode: ReviewMode = "split",
19-
): DiffStatsToggleResult {
16+
export function useDiffStatsToggle(task: Task): DiffStatsToggleResult {
2017
const taskId = task.id;
2118
const { filesChanged, linesAdded, linesRemoved } =
2219
useTaskDiffSummaryStats(task);
@@ -28,8 +25,9 @@ export function useDiffStatsToggle(
2825

2926
const isOpen = reviewMode !== "closed";
3027
const toggle = useCallback(
31-
() => setReviewMode(taskId, isOpen ? "closed" : openMode),
32-
[setReviewMode, taskId, isOpen, openMode],
28+
() =>
29+
setReviewMode(taskId, isOpen ? "closed" : getDefaultReviewMode()),
30+
[setReviewMode, taskId, isOpen],
3331
);
3432

3533
return {

packages/ui/src/features/command/CommandMenu.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { channelGlyph } from "@posthog/ui/features/canvas/components/channelGlyp
3535
import { useChannels } from "@posthog/ui/features/canvas/hooks/useChannels";
3636
import { useChannelsLayout } from "@posthog/ui/features/canvas/hooks/useChannelsLayout";
3737
import { useTaskChannelMap } from "@posthog/ui/features/canvas/hooks/useTaskChannelMap";
38+
import { getDefaultReviewMode } from "@posthog/ui/features/code-review/getDefaultReviewMode";
3839
import { useReviewNavigationStore } from "@posthog/ui/features/code-review/reviewNavigationStore";
3940
import { CommandKeyHints } from "@posthog/ui/features/command/CommandKeyHints";
4041
import { useFileSearchStore } from "@posthog/ui/features/command/fileSearchStore";
@@ -191,7 +192,7 @@ export function CommandMenu({ open, onOpenChange }: CommandMenuProps) {
191192
if (!reviewTaskId) return;
192193
const mode = getReviewMode(reviewTaskId);
193194
if (mode === "closed") {
194-
setReviewMode(reviewTaskId, "split");
195+
setReviewMode(reviewTaskId, getDefaultReviewMode());
195196
}
196197
}, [reviewTaskId, getReviewMode, setReviewMode]);
197198

packages/ui/src/features/sessions/components/DiffStatsChip.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ vi.mock("@posthog/ui/primitives/Tooltip", () => ({
2323
import { DiffStatsChip } from "./DiffStatsChip";
2424

2525
describe("DiffStatsChip", () => {
26-
it("opens the diff view in split mode", () => {
26+
it("uses the shared responsive diff-view toggle", () => {
2727
const task = { id: "task-1" } as Task;
2828

2929
render(<DiffStatsChip task={task} />);
3030

31-
expect(useDiffStatsToggle).toHaveBeenCalledWith(task, "split");
31+
expect(useDiffStatsToggle).toHaveBeenCalledWith(task);
3232
});
3333
});

packages/ui/src/features/sessions/components/DiffStatsChip.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ interface DiffStatsChipProps {
1414

1515
export function DiffStatsChip({ task }: DiffStatsChipProps) {
1616
const { filesChanged, linesAdded, linesRemoved, isOpen, toggle } =
17-
useDiffStatsToggle(task, "split");
17+
useDiffStatsToggle(task);
1818

1919
if (filesChanged === 0) return null;
2020

packages/ui/src/shell/GlobalEventHandlers.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { useHostTRPC } from "@posthog/host-router/react";
99
import { PROJECT_BLUEBIRD_FLAG } from "@posthog/shared";
1010
import type { Task } from "@posthog/shared/domain-types";
1111
import { useChannelsLayout } from "@posthog/ui/features/canvas/hooks/useChannelsLayout";
12+
import { getDefaultReviewMode } from "@posthog/ui/features/code-review/getDefaultReviewMode";
1213
import { useReviewNavigationStore } from "@posthog/ui/features/code-review/reviewNavigationStore";
1314
import { SHORTCUTS } from "@posthog/ui/features/command/keyboard-shortcuts";
1415
import { useFeatureFlag } from "@posthog/ui/features/feature-flags/useFeatureFlag";
@@ -189,7 +190,10 @@ export function GlobalEventHandlers({
189190
const handleToggleReview = useCallback(() => {
190191
if (!currentTaskId) return;
191192
const mode = getReviewMode(currentTaskId);
192-
setReviewMode(currentTaskId, mode === "closed" ? "split" : "closed");
193+
setReviewMode(
194+
currentTaskId,
195+
mode === "closed" ? getDefaultReviewMode() : "closed",
196+
);
193197
}, [currentTaskId, getReviewMode, setReviewMode]);
194198

195199
useHotkeys(

0 commit comments

Comments
 (0)