Skip to content

Commit f1a8564

Browse files
Output telemetry when clicking links
1 parent 34e98c4 commit f1a8564

4 files changed

Lines changed: 33 additions & 12 deletions

File tree

extensions/ql-vscode/src/view/common/FileCodeSnippet/CodeSnippetMessage.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
} from "../../../remote-queries/shared/analysis-result";
99
import { createRemoteFileRef } from "../../../pure/location-link-utils";
1010
import { VerticalSpace } from "../VerticalSpace";
11+
import { sendTelemetry } from "../Telemetry";
1112

1213
const getSeverityColor = (severity: ResultSeverity) => {
1314
switch (severity) {
@@ -65,6 +66,7 @@ export const CodeSnippetMessage = ({
6566
return (
6667
<LocationLink
6768
key={index}
69+
onClick={() => sendTelemetry("alert-message-link")}
6870
href={createRemoteFileRef(
6971
token.location.fileLink,
7072
token.location.highlightedRegion?.startLine,

extensions/ql-vscode/src/view/common/FileCodeSnippet/FileCodeSnippet.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
import { createRemoteFileRef } from "../../../pure/location-link-utils";
1313
import { CodeSnippetMessage } from "./CodeSnippetMessage";
1414
import { CodeSnippetLine } from "./CodeSnippetLine";
15+
import { sendTelemetry } from "../Telemetry";
1516

1617
const borderColor = "var(--vscode-editor-snippetFinalTabstopHighlightBorder)";
1718

@@ -67,7 +68,12 @@ export const FileCodeSnippet = ({
6768
return (
6869
<Container>
6970
<TitleContainer>
70-
<VSCodeLink href={titleFileUri}>{fileLink.filePath}</VSCodeLink>
71+
<VSCodeLink
72+
onClick={() => sendTelemetry("file-code-snippet-title-link")}
73+
href={titleFileUri}
74+
>
75+
{fileLink.filePath}
76+
</VSCodeLink>
7177
</TitleContainer>
7278
{message && severity && (
7379
<CodeSnippetMessage message={message} severity={severity}>
@@ -83,7 +89,12 @@ export const FileCodeSnippet = ({
8389
return (
8490
<Container>
8591
<TitleContainer>
86-
<VSCodeLink href={titleFileUri}>{fileLink.filePath}</VSCodeLink>
92+
<VSCodeLink
93+
onClick={() => sendTelemetry("file-code-snippet-title-link")}
94+
href={titleFileUri}
95+
>
96+
{fileLink.filePath}
97+
</VSCodeLink>
8798
</TitleContainer>
8899
<CodeContainer>
89100
{code.map((line, index) => (

extensions/ql-vscode/src/view/common/Telemetry.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,24 @@ export function useStateWithTelemetry<S>(
3333
>(() => {
3434
if (filterTelemetryOnValue === undefined) {
3535
return (x: React.SetStateAction<S>) => {
36-
vscode.postMessage({
37-
t: "telemetry",
38-
action: telemetryAction,
39-
});
36+
sendTelemetry(telemetryAction);
4037
setter(x);
4138
};
4239
} else {
4340
return (x: S) => {
4441
if (filterTelemetryOnValue(x)) {
45-
vscode.postMessage({
46-
t: "telemetry",
47-
action: telemetryAction,
48-
});
42+
sendTelemetry(telemetryAction);
4943
}
5044
setter(x);
5145
};
5246
}
5347
}, [telemetryAction, filterTelemetryOnValue, setter]);
5448
return [value, setterWithTelemetry];
5549
}
50+
51+
export function sendTelemetry(telemetryAction: string) {
52+
vscode.postMessage({
53+
t: "telemetry",
54+
action: telemetryAction,
55+
});
56+
}

extensions/ql-vscode/src/view/remote-queries/RawResultsTable.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
import { tryGetRemoteLocation } from "../../pure/bqrs-utils";
1010
import TextButton from "./TextButton";
1111
import { convertNonPrintableChars } from "../../text-utils";
12-
import { useStateWithTelemetry } from "../common/Telemetry";
12+
import { sendTelemetry, useStateWithTelemetry } from "../common/Telemetry";
1313

1414
const numOfResultsInContractedMode = 5;
1515

@@ -59,7 +59,14 @@ const Cell = ({ value, fileLinkPrefix, sourceLocationPrefix }: CellProps) => {
5959
);
6060
const safeLabel = convertNonPrintableChars(value.label);
6161
if (url) {
62-
return <VSCodeLink href={url}>{safeLabel}</VSCodeLink>;
62+
return (
63+
<VSCodeLink
64+
onClick={() => sendTelemetry("raw-results-link")}
65+
href={url}
66+
>
67+
{safeLabel}
68+
</VSCodeLink>
69+
);
6370
} else {
6471
return <span>{safeLabel}</span>;
6572
}

0 commit comments

Comments
 (0)