mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 04:15:30 +00:00
posthog events
This commit is contained in:
parent
a80e92eb3d
commit
5fb056b910
3 changed files with 54 additions and 27 deletions
|
|
@ -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 () => {
|
||||||
|
const response = await measure(() => unwrapServiceError(
|
||||||
findSearchBasedSymbolReferences({
|
findSearchBasedSymbolReferences({
|
||||||
symbolName: selectedSymbolInfo.symbolName,
|
symbolName: selectedSymbolInfo.symbolName,
|
||||||
language: selectedSymbolInfo.language,
|
language: selectedSymbolInfo.language,
|
||||||
revisionName: selectedSymbolInfo.revisionName,
|
revisionName: selectedSymbolInfo.revisionName,
|
||||||
repoName: isGlobalSearchEnabled ? undefined : selectedSymbolInfo.repoName
|
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 () => {
|
||||||
|
const response = await measure(() => unwrapServiceError(
|
||||||
findSearchBasedSymbolDefinitions({
|
findSearchBasedSymbolDefinitions({
|
||||||
symbolName: selectedSymbolInfo.symbolName,
|
symbolName: selectedSymbolInfo.symbolName,
|
||||||
language: selectedSymbolInfo.language,
|
language: selectedSymbolInfo.language,
|
||||||
revisionName: selectedSymbolInfo.revisionName,
|
revisionName: selectedSymbolInfo.revisionName,
|
||||||
repoName: isGlobalSearchEnabled ? undefined : selectedSymbolInfo.repoName
|
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', () => {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
Loading…
Reference in a new issue