Skip to content

Commit 8d5cf22

Browse files
authored
add analytics events DAO-97 (#1567)
* implement analytics events * clean up * add dao address to created event * clean up * only emit event if creating a DAO * pass address or ens * bug fixing
1 parent e125964 commit 8d5cf22

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

src/analytics.js

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ const methods = {
77
export const events = {
88
TEMPLATE_SELECTED: 'template_selected',
99
WALLET_DISCONNECTED: 'wallet_disconnected',
10+
DAO_CREATEBTN_CLICKED: 'dao_createBtn_clicked',
11+
DAO_CREATED: 'dao_created',
12+
DAO_CREATIONFAILED: 'dao_creationFailed',
1013
}
1114

1215
/**

src/check-domain.js

+1
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,5 @@ export {
6464
DOMAIN_LOADING,
6565
DOMAIN_NONE,
6666
useCheckDomain,
67+
completeDomain,
6768
}

src/onboarding/Create/Create.js

+44
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Button } from '@aragon/ui'
44
import {
55
fetchApmArtifact,
66
getRecommendedGasLimit,
7+
resolveEnsDomain,
78
} from '../../aragonjs-wrapper'
89
import { EthereumAddressType } from '../../prop-types'
910
import {
@@ -27,6 +28,9 @@ import {
2728
STATUS_TEMPLATE_SCREENS,
2829
STATUS_DEPLOYMENT,
2930
} from './create-statuses'
31+
import { useWallet } from '../../wallet'
32+
import { trackEvent, events } from '../../analytics'
33+
import { completeDomain } from '../../check-domain'
3034

3135
// Used during the template selection phase, since we don’t know yet what are
3236
// going to be the configuration steps.
@@ -225,6 +229,8 @@ function useDeploymentState(
225229
templateData,
226230
walletWeb3
227231
) {
232+
const { networkName } = useWallet()
233+
228234
const [transactionProgress, setTransactionProgress] = useState({
229235
signing: 0,
230236
error: -1,
@@ -276,13 +282,45 @@ function useDeploymentState(
276282
await walletWeb3.eth.sendTransaction(transaction)
277283

278284
if (!cancelled) {
285+
// analytics
286+
// we are only interested in the first tx of creating a DAO
287+
if (
288+
transaction?.data ===
289+
deployTransactions[0]?.transaction?.data &&
290+
transactionProgress.signed === 0
291+
) {
292+
const daoEns = completeDomain(templateData.domain)
293+
const daoAddress = (await resolveEnsDomain(daoEns)) || daoEns
294+
295+
trackEvent(events.DAO_CREATED, {
296+
network: networkName,
297+
template: template.name,
298+
dao_identifier: templateData.domain,
299+
dao_address: daoAddress,
300+
})
301+
}
302+
279303
setTransactionProgress(({ signed, errored }) => ({
280304
signed: signed + 1,
281305
errored,
282306
}))
283307
}
284308
} catch (err) {
285309
log('Failed onboarding transaction', err)
310+
311+
if (
312+
transaction?.data ===
313+
deployTransactions[0]?.transaction?.data &&
314+
transactionProgress.signed === 0
315+
) {
316+
// analytics
317+
trackEvent(events.DAO_CREATIONFAILED, {
318+
network: networkName,
319+
template: template.name,
320+
error: err.message || err.reason,
321+
})
322+
}
323+
286324
if (!cancelled) {
287325
setTransactionProgress(({ signed, errored }) => ({
288326
errored: signed,
@@ -426,6 +464,12 @@ const Create = React.memo(function Create({
426464
walletWeb3
427465
)
428466

467+
// useEffect(() => {
468+
// if (condition) {
469+
470+
// }
471+
// }, [transactionsStatus])
472+
429473
const handleUseTemplate = useCallback(
430474
(id, optionalApps) => {
431475
selectTemplate(id, optionalApps)

src/templates/kit/screens/ReviewScreen.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
useTheme,
1111
} from '@aragon/ui'
1212
import { Header, Navigation, ScreenPropsType } from '..'
13+
import { trackEvent, events } from '../../../analytics'
14+
import { useWallet } from '../../../wallet'
1315

1416
function ReviewScreen({
1517
items,
@@ -18,10 +20,17 @@ function ReviewScreen({
1820
screenTitle,
1921
}) {
2022
const theme = useTheme()
23+
const { networkName } = useWallet()
2124

2225
const handleNext = useCallback(() => {
26+
// analytics
27+
trackEvent(events.DAO_CREATEBTN_CLICKED, {
28+
network: networkName,
29+
template: items[0].fields[0][1],
30+
})
31+
2332
next(data)
24-
}, [data, next])
33+
}, [data, next, items, networkName])
2534

2635
const containerRef = useRef()
2736
const prevNextRef = useRef()

0 commit comments

Comments
 (0)