Skip to content

Commit 70f4a18

Browse files
adboiocursoragent
andauthored
feat: Track diff view mode changes (#1439)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent 2dd5059 commit 70f4a18

2 files changed

Lines changed: 34 additions & 4 deletions

File tree

apps/code/src/renderer/features/code-editor/stores/diffViewerStore.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { ANALYTICS_EVENTS } from "@shared/types/analytics";
2+
import { track } from "@utils/analytics";
13
import { create } from "zustand";
24
import { persist } from "zustand/middleware";
35

@@ -30,11 +32,32 @@ export const useDiffViewerStore = create<DiffViewerStore>()(
3032
loadFullFiles: false,
3133
wordDiffs: true,
3234
hideWhitespaceChanges: false,
33-
setViewMode: (mode) => set({ viewMode: mode }),
35+
setViewMode: (mode) =>
36+
set((state) => {
37+
if (state.viewMode === mode) {
38+
return state;
39+
}
40+
41+
track(ANALYTICS_EVENTS.DIFF_VIEW_MODE_CHANGED, {
42+
from_mode: state.viewMode,
43+
to_mode: mode,
44+
});
45+
46+
return { viewMode: mode };
47+
}),
3448
toggleViewMode: () =>
35-
set((s) => ({
36-
viewMode: s.viewMode === "split" ? "unified" : "split",
37-
})),
49+
set((state) => {
50+
const nextMode = state.viewMode === "split" ? "unified" : "split";
51+
52+
track(ANALYTICS_EVENTS.DIFF_VIEW_MODE_CHANGED, {
53+
from_mode: state.viewMode,
54+
to_mode: nextMode,
55+
});
56+
57+
return {
58+
viewMode: nextMode,
59+
};
60+
}),
3861
toggleWordWrap: () => set((s) => ({ wordWrap: !s.wordWrap })),
3962
toggleLoadFullFiles: () =>
4063
set((s) => ({ loadFullFiles: !s.loadFullFiles })),

apps/code/src/shared/types/analytics.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,11 @@ export interface ReviewPanelViewedProperties {
133133
task_id: string;
134134
}
135135

136+
export interface DiffViewModeChangedProperties {
137+
from_mode: "split" | "unified";
138+
to_mode: "split" | "unified";
139+
}
140+
136141
// Workspace events
137142
export interface WorkspaceCreatedProperties {
138143
task_id: string;
@@ -235,6 +240,7 @@ export const ANALYTICS_EVENTS = {
235240
FILE_OPENED: "File opened",
236241
FILE_DIFF_VIEWED: "File diff viewed",
237242
REVIEW_PANEL_VIEWED: "Review panel viewed",
243+
DIFF_VIEW_MODE_CHANGED: "Diff view mode changed",
238244

239245
// Workspace events
240246
WORKSPACE_CREATED: "Workspace created",
@@ -290,6 +296,7 @@ export type EventPropertyMap = {
290296
[ANALYTICS_EVENTS.FILE_OPENED]: FileOpenedProperties;
291297
[ANALYTICS_EVENTS.FILE_DIFF_VIEWED]: FileDiffViewedProperties;
292298
[ANALYTICS_EVENTS.REVIEW_PANEL_VIEWED]: ReviewPanelViewedProperties;
299+
[ANALYTICS_EVENTS.DIFF_VIEW_MODE_CHANGED]: DiffViewModeChangedProperties;
293300

294301
// Workspace events
295302
[ANALYTICS_EVENTS.WORKSPACE_CREATED]: WorkspaceCreatedProperties;

0 commit comments

Comments
 (0)