posthog events

This commit is contained in:
bkellam 2025-11-30 18:26:51 -08:00
parent a80e92eb3d
commit 5fb056b910
3 changed files with 54 additions and 27 deletions

View file

@ -8,7 +8,7 @@ import { ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable";
import { Toggle } from "@/components/ui/toggle"; import { Toggle } from "@/components/ui/toggle";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { useDomain } from "@/hooks/useDomain"; import { useDomain } from "@/hooks/useDomain";
import { unwrapServiceError } from "@/lib/utils"; import { measure, unwrapServiceError } from "@/lib/utils";
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import clsx from "clsx"; import clsx from "clsx";
import { GlobeIcon, Loader2 } from "lucide-react"; import { GlobeIcon, Loader2 } from "lucide-react";
@ -17,6 +17,7 @@ import { VscSymbolMisc } from "react-icons/vsc";
import { ReferenceList } from "./referenceList"; import { ReferenceList } from "./referenceList";
import { KeyboardShortcutHint } from "@/app/components/keyboardShortcutHint"; import { KeyboardShortcutHint } from "@/app/components/keyboardShortcutHint";
import { useHotkeys } from "react-hotkeys-hook"; import { useHotkeys } from "react-hotkeys-hook";
import useCaptureEvent from "@/hooks/useCaptureEvent";
interface ExploreMenuProps { interface ExploreMenuProps {
selectedSymbolInfo: { selectedSymbolInfo: {
@ -30,8 +31,8 @@ interface ExploreMenuProps {
export const ExploreMenu = ({ export const ExploreMenu = ({
selectedSymbolInfo, selectedSymbolInfo,
}: ExploreMenuProps) => { }: ExploreMenuProps) => {
const domain = useDomain(); const domain = useDomain();
const captureEvent = useCaptureEvent();
const { const {
state: { activeExploreMenuTab }, state: { activeExploreMenuTab },
updateBrowseState, updateBrowseState,
@ -46,14 +47,23 @@ export const ExploreMenu = ({
isLoading: isReferencesResponseLoading, isLoading: isReferencesResponseLoading,
} = useQuery({ } = useQuery({
queryKey: ["references", selectedSymbolInfo.symbolName, selectedSymbolInfo.repoName, selectedSymbolInfo.revisionName, selectedSymbolInfo.language, domain, isGlobalSearchEnabled], queryKey: ["references", selectedSymbolInfo.symbolName, selectedSymbolInfo.repoName, selectedSymbolInfo.revisionName, selectedSymbolInfo.language, domain, isGlobalSearchEnabled],
queryFn: () => unwrapServiceError( queryFn: async () => {
findSearchBasedSymbolReferences({ const response = await measure(() => unwrapServiceError(
symbolName: selectedSymbolInfo.symbolName, findSearchBasedSymbolReferences({
language: selectedSymbolInfo.language, symbolName: selectedSymbolInfo.symbolName,
revisionName: selectedSymbolInfo.revisionName, language: selectedSymbolInfo.language,
repoName: isGlobalSearchEnabled ? undefined : selectedSymbolInfo.repoName revisionName: selectedSymbolInfo.revisionName,
repoName: isGlobalSearchEnabled ? undefined : selectedSymbolInfo.repoName
})
), 'findSearchBasedSymbolReferences', false);
captureEvent('wa_explore_menu_references_loaded', {
durationMs: response.durationMs,
isGlobalSearchEnabled,
}) })
),
return response.data;
}
}); });
const { const {
@ -63,14 +73,23 @@ export const ExploreMenu = ({
isLoading: isDefinitionsResponseLoading, isLoading: isDefinitionsResponseLoading,
} = useQuery({ } = useQuery({
queryKey: ["definitions", selectedSymbolInfo.symbolName, selectedSymbolInfo.repoName, selectedSymbolInfo.revisionName, selectedSymbolInfo.language, domain, isGlobalSearchEnabled], queryKey: ["definitions", selectedSymbolInfo.symbolName, selectedSymbolInfo.repoName, selectedSymbolInfo.revisionName, selectedSymbolInfo.language, domain, isGlobalSearchEnabled],
queryFn: () => unwrapServiceError( queryFn: async () => {
findSearchBasedSymbolDefinitions({ const response = await measure(() => unwrapServiceError(
symbolName: selectedSymbolInfo.symbolName, findSearchBasedSymbolDefinitions({
language: selectedSymbolInfo.language, symbolName: selectedSymbolInfo.symbolName,
revisionName: selectedSymbolInfo.revisionName, language: selectedSymbolInfo.language,
repoName: isGlobalSearchEnabled ? undefined : selectedSymbolInfo.repoName revisionName: selectedSymbolInfo.revisionName,
repoName: isGlobalSearchEnabled ? undefined : selectedSymbolInfo.repoName
})
), 'findSearchBasedSymbolDefinitions', false);
captureEvent('wa_explore_menu_definitions_loaded', {
durationMs: response.durationMs,
isGlobalSearchEnabled,
}) })
),
return response.data;
}
}); });
useHotkeys('shift+a', () => { useHotkeys('shift+a', () => {

View file

@ -68,7 +68,7 @@ export const useHoveredOverSymbolInfo = ({
}) })
), 'findSearchBasedSymbolDefinitions', false); ), 'findSearchBasedSymbolDefinitions', false);
captureEvent('wa_find_hovered_over_symbol_definitions', { captureEvent('wa_symbol_hover_popup_definitions_loaded', {
durationMs: response.durationMs, durationMs: response.durationMs,
}); });

View file

@ -273,15 +273,6 @@ export type PosthogEventMap = {
wa_api_key_created: {}, wa_api_key_created: {},
wa_api_key_creation_fail: {}, wa_api_key_creation_fail: {},
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
wa_goto_definition_pressed: {
source: 'chat' | 'browse' | 'preview',
},
wa_find_references_pressed: {
source: 'chat' | 'browse' | 'preview',
},
//////////////////////////////////////////////////////////////////
wa_explore_menu_reference_clicked: {},
//////////////////////////////////////////////////////////////////
wa_chat_feedback_submitted: { wa_chat_feedback_submitted: {
feedback: 'like' | 'dislike', feedback: 'like' | 'dislike',
chatId: string, chatId: string,
@ -303,8 +294,25 @@ export type PosthogEventMap = {
wa_github_star_toast_displayed: {}, wa_github_star_toast_displayed: {},
wa_github_star_toast_clicked: {}, wa_github_star_toast_clicked: {},
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
wa_find_hovered_over_symbol_definitions: { wa_goto_definition_pressed: {
source: 'chat' | 'browse' | 'preview',
},
wa_find_references_pressed: {
source: 'chat' | 'browse' | 'preview',
},
wa_symbol_hover_popup_definitions_loaded: {
durationMs: number, durationMs: number,
},
wa_explore_menu_reference_clicked: {},
wa_explore_menu_references_loaded: {
durationMs: number,
// Whether or not the user is searching all repositories.
isGlobalSearchEnabled: boolean,
},
wa_explore_menu_definitions_loaded: {
durationMs: number,
// Whether or not the user is searching all repositories.
isGlobalSearchEnabled: boolean,
} }
} }
export type PosthogEvent = keyof PosthogEventMap; export type PosthogEvent = keyof PosthogEventMap;