Skip to content

Commit e3f3a79

Browse files
Re-add Segment events for RPC interactive reference (#2127)
1 parent fbd1b9b commit e3f3a79

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

src/components/ParserOpenRPC/AuthBox/index.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useContext } from 'react'
22
import clsx from 'clsx'
33
import Button from '@site/src/components/elements/buttons/button'
44
import styles from './styles.module.scss'
5+
import { trackClickForSegment } from '@site/src/lib/segmentAnalytics'
56
import { MetamaskProviderContext } from '@site/src/theme/Root'
67

78
interface AuthBoxProps {
@@ -11,6 +12,14 @@ interface AuthBoxProps {
1112
export const AuthBox = ({ theme }: AuthBoxProps) => {
1213
const { metaMaskWalletIdConnectHandler } = useContext(MetamaskProviderContext)
1314
const connectHandler = () => {
15+
trackClickForSegment({
16+
eventName: 'Connect wallet',
17+
clickType: 'Connect wallet',
18+
userExperience: 'B',
19+
responseStatus: null,
20+
responseMsg: null,
21+
timestamp: Date.now(),
22+
})
1423
metaMaskWalletIdConnectHandler()
1524
}
1625
return (

src/components/ParserOpenRPC/index.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import global from './global.module.scss'
1010
import modalDrawerStyles from './ModalDrawer/styles.module.scss'
1111
import clsx from 'clsx'
1212
import { useColorMode } from '@docusaurus/theme-common'
13+
import { trackClickForSegment, trackInputChangeForSegment } from '@site/src/lib/segmentAnalytics'
1314
import { AuthBox } from '@site/src/components/ParserOpenRPC/AuthBox'
1415
import { MetamaskProviderContext } from '@site/src/theme/Root'
1516
import ProjectsBox from '@site/src/components/ParserOpenRPC/ProjectsBox'
@@ -51,8 +52,27 @@ export default function ParserOpenRPC({ network, method, extraContent }: ParserP
5152
const [defExampleResponse, setDefExampleResponse] = useState(undefined)
5253
const [isLoading, setIsLoading] = useState(false)
5354
const { colorMode } = useColorMode()
55+
const trackAnalyticsForRequest = response => {
56+
trackClickForSegment({
57+
eventName: 'Request Sent',
58+
clickType: 'Request Sent',
59+
userExperience: 'B',
60+
// @ts-ignore
61+
...(response?.code && { responseStatus: response.code }),
62+
responseMsg: null,
63+
timestamp: Date.now(),
64+
})
65+
}
5466
const openModal = () => {
5567
setModalOpen(true)
68+
trackClickForSegment({
69+
eventName: 'Customize Request',
70+
clickType: 'Customize Request',
71+
userExperience: 'B',
72+
responseStatus: null,
73+
responseMsg: null,
74+
timestamp: Date.now(),
75+
})
5676
}
5777
const closeModal = () => setModalOpen(false)
5878

@@ -144,6 +164,11 @@ export default function ParserOpenRPC({ network, method, extraContent }: ParserP
144164
}
145165

146166
const onParamsChangeHandle = data => {
167+
trackInputChangeForSegment({
168+
eventName: 'Request Configuration Started',
169+
userExperience: 'B',
170+
timestamp: Date.now(),
171+
})
147172

148173
if (typeof data !== 'object' || data === null || Object.keys(data).length === 0) {
149174
setParamsData([])
@@ -167,6 +192,7 @@ export default function ParserOpenRPC({ network, method, extraContent }: ParserP
167192
params: paramsData,
168193
})
169194
setReqResult(response)
195+
trackAnalyticsForRequest(response)
170196
if (method === 'eth_getEncryptionPublicKey' && response) {
171197
setUserEncPublicKey(response as string)
172198
}
@@ -200,6 +226,7 @@ export default function ParserOpenRPC({ network, method, extraContent }: ParserP
200226
if (res.ok) {
201227
const response = await res.json()
202228
setReqResult(response)
229+
trackAnalyticsForRequest(response)
203230
} else {
204231
const errorText = await res.text()
205232
const errorState = JSON.parse(errorText)

src/lib/segmentAnalytics.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
export const trackClickForSegment = ({
2+
eventName,
3+
clickType,
4+
userExperience,
5+
responseStatus,
6+
responseMsg,
7+
timestamp,
8+
}) => {
9+
if (window.analytics) {
10+
window.analytics.track(`CTA ${clickType} Clicked`, {
11+
...(eventName && { event_name: eventName }),
12+
...(userExperience && { user_experience: userExperience }),
13+
...(responseStatus && { response_status: responseStatus }),
14+
...(responseMsg && { response_msg: responseMsg }),
15+
...(timestamp && { timestamp: timestamp }),
16+
});
17+
}
18+
};
19+
20+
export const trackInputChangeForSegment = ({
21+
eventName,
22+
userExperience,
23+
timestamp,
24+
}) => {
25+
if (window.analytics) {
26+
window.analytics.track("Input changed", {
27+
...(eventName && { event_name: eventName }),
28+
...(userExperience && { user_experience: userExperience }),
29+
...(timestamp && { timestamp: timestamp }),
30+
});
31+
}
32+
};

0 commit comments

Comments
 (0)