Skip to content

Commit df06f99

Browse files
authored
feat: add posthog action to select blockchain (#2076)
1 parent e923d7f commit df06f99

File tree

5 files changed

+54
-10
lines changed

5 files changed

+54
-10
lines changed

apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/events/multi-wallet.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const makePaperWalletOnboardingRestoreEvent = <E extends string>(eventSuffix: E)
1616

1717
const multiWalletActions = {
1818
create: {
19+
CHOSE_BLOCKCHAIN_CLICK: makeMultiWalletCreateEvent('select a blockchain | next | click'),
1920
CHOOSE_RECOVERY_MODE_MNEMONIC_CLICK: makePaperWalletOnboardingCreateEvent('choose mode | recovery phrase | click'),
2021
CHOOSE_RECOVERY_MODE_PAPER_CLICK: makePaperWalletOnboardingCreateEvent('choose mode | paper wallet | click'),
2122
CHOOSE_RECOVERY_MODE_NEXT_CLICK: makePaperWalletOnboardingCreateEvent('choose mode | next | click'),
@@ -52,6 +53,7 @@ const multiWalletActions = {
5253
},
5354
restore: {
5455
WALLET_SETUP_PAGEVIEW: makePaperWalletOnboardingCreateEvent('step: wallet info | pageview'),
56+
CHOSE_BLOCKCHAIN_CLICK: makeMultiWalletRestoreEvent('select a blockchain | next | click'),
5557
CHOOSE_RECOVERY_MODE_MNEMONIC_CLICK: makePaperWalletOnboardingRestoreEvent('choose mode | recovery phrase | click'),
5658
CHOOSE_RECOVERY_MODE_PAPER_CLICK: makePaperWalletOnboardingRestoreEvent('choose mode | paper wallet | click'),
5759
CHOOSE_RECOVERY_MODE_NEXT_CLICK: makePaperWalletOnboardingRestoreEvent('choose mode | next | click'),

apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/events/onboarding.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const onboardingActions = {
2727
PIN_EXTENSION_CLICK: makeOnboardingEvent('lace main view | pin the wallet extension | click')
2828
},
2929
create: {
30+
CHOSE_BLOCKCHAIN_CLICK: makeOnboardingCreateEvent('select a blockchain | next | click'),
3031
CHOOSE_RECOVERY_MODE_MNEMONIC_CLICK: makePaperWalletOnboardingCreateEvent('choose mode | recovery phrase | click'),
3132
CHOOSE_RECOVERY_MODE_PAPER_CLICK: makePaperWalletOnboardingCreateEvent('choose mode | paper wallet | click'),
3233
CHOOSE_RECOVERY_MODE_NEXT_CLICK: makePaperWalletOnboardingCreateEvent('choose mode | next | click'),
@@ -63,6 +64,7 @@ const onboardingActions = {
6364
},
6465
restore: {
6566
WALLET_SETUP_PAGEVIEW: makePaperWalletOnboardingCreateEvent('step: wallet info | pageview'),
67+
CHOSE_BLOCKCHAIN_CLICK: makeOnboardingRestoreEvent('select a blockchain | next | click'),
6668
CHOOSE_RECOVERY_MODE_MNEMONIC_CLICK: makePaperWalletOnboardingRestoreEvent('choose mode | recovery phrase | click'),
6769
CHOOSE_RECOVERY_MODE_PAPER_CLICK: makePaperWalletOnboardingRestoreEvent('choose mode | paper wallet | click'),
6870
CHOOSE_RECOVERY_MODE_NEXT_CLICK: makePaperWalletOnboardingRestoreEvent('choose mode | next | click'),

apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/events/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type CreateFlowActions = Record<
1010
| 'RECOVERY_PHRASE_COPY_READ_MORE_CLICK'
1111
| 'RECOVERY_PHRASE_PASTE_READ_MORE_CLICK'
1212
| 'WALLET_ADDED'
13+
| 'CHOSE_BLOCKCHAIN_CLICK'
1314
| 'CHOOSE_RECOVERY_MODE_MNEMONIC_CLICK'
1415
| 'CHOOSE_RECOVERY_MODE_PAPER_CLICK'
1516
| 'CHOOSE_RECOVERY_MODE_NEXT_CLICK'
@@ -24,6 +25,7 @@ export type CreateFlowActions = Record<
2425
>;
2526
export type RestoreFlowActions = Record<
2627
| 'WALLET_SETUP_PAGEVIEW'
28+
| 'CHOSE_BLOCKCHAIN_CLICK'
2729
| 'CHOOSE_RECOVERY_MODE_MNEMONIC_CLICK'
2830
| 'CHOOSE_RECOVERY_MODE_PAPER_CLICK'
2931
| 'CHOOSE_RECOVERY_MODE_NEXT_CLICK'

apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/create-wallet/steps/SelectBlockchain.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,46 @@ import { WalletSetupSelectBlockchain } from '@lace/core';
33
import { useCreateWallet } from '../context';
44
import { BitcoinImportMessageDialog } from '../../../wallet-setup/components/BitcoinImportMessageDialog';
55
import { usePostHogClientContext } from '@providers/PostHogClientProvider';
6+
import { logger } from '@lace/common';
7+
import { useWalletOnboarding } from '../../walletOnboardingContext';
8+
import { useAnalyticsContext } from '@providers/AnalyticsProvider';
69

710
export const SelectBlockchain = (): ReactElement => {
811
const posthog = usePostHogClientContext();
912
const { back, next, selectedBlockchain, setSelectedBlockchain } = useCreateWallet();
1013
const [isBitcoinDialogOpen, setIsBitcoinDialogOpen] = useState(false);
1114
const bitcoinWalletsEnabled = posthog?.isFeatureFlagEnabled('bitcoin-wallets');
15+
const analytics = useAnalyticsContext();
16+
const { postHogActions } = useWalletOnboarding();
17+
18+
// eslint-disable-next-line consistent-return
19+
const handleNext = () => {
20+
const doNext = async () => {
21+
await next();
22+
await analytics.sendEventToPostHog(postHogActions.create.CHOSE_BLOCKCHAIN_CLICK, {
23+
blockchain: selectedBlockchain
24+
});
25+
};
26+
27+
if (selectedBlockchain === 'Bitcoin') {
28+
if (isBitcoinDialogOpen) setIsBitcoinDialogOpen(false);
29+
else return setIsBitcoinDialogOpen(true);
30+
}
31+
32+
doNext().catch((error) => logger.error('Error in next selecting blockchain', error));
33+
};
1234

1335
return (
1436
<>
1537
<WalletSetupSelectBlockchain
1638
back={back}
17-
next={selectedBlockchain === 'Bitcoin' ? () => setIsBitcoinDialogOpen(true) : next}
39+
next={handleNext}
1840
selectedBlockchain={selectedBlockchain}
1941
setSelectedBlockchain={setSelectedBlockchain}
2042
showBitcoinOption={bitcoinWalletsEnabled}
2143
/>
2244
<BitcoinImportMessageDialog
23-
onConfirm={() => {
24-
setIsBitcoinDialogOpen(false);
25-
void next();
26-
}}
45+
onConfirm={handleNext}
2746
onCancel={() => setIsBitcoinDialogOpen(false)}
2847
open={isBitcoinDialogOpen}
2948
setOpen={setIsBitcoinDialogOpen}

apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/restore-wallet/steps/SelectBlockchain.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,46 @@ import { WalletSetupSelectBlockchain } from '@lace/core';
33
import { useRestoreWallet } from '../context';
44
import { BitcoinImportMessageDialog } from '../../../wallet-setup/components/BitcoinImportMessageDialog';
55
import { usePostHogClientContext } from '@providers/PostHogClientProvider';
6+
import { logger } from '@lace/common';
7+
import { useWalletOnboarding } from '../../walletOnboardingContext';
8+
import { useAnalyticsContext } from '@providers/AnalyticsProvider';
69

710
export const SelectBlockchain = (): ReactElement => {
811
const posthog = usePostHogClientContext();
912
const { back, next, selectedBlockchain, setSelectedBlockchain } = useRestoreWallet();
1013
const [isBitcoinDialogOpen, setIsBitcoinDialogOpen] = useState(false);
1114
const bitcoinWalletsEnabled = posthog?.isFeatureFlagEnabled('bitcoin-wallets');
15+
const analytics = useAnalyticsContext();
16+
const { postHogActions } = useWalletOnboarding();
17+
18+
// eslint-disable-next-line consistent-return
19+
const handleNext = () => {
20+
const doNext = async () => {
21+
await next();
22+
await analytics.sendEventToPostHog(postHogActions.restore.CHOSE_BLOCKCHAIN_CLICK, {
23+
blockchain: selectedBlockchain
24+
});
25+
};
26+
27+
if (selectedBlockchain === 'Bitcoin') {
28+
if (isBitcoinDialogOpen) setIsBitcoinDialogOpen(false);
29+
else return setIsBitcoinDialogOpen(true);
30+
}
31+
32+
doNext().catch((error) => logger.error('Error in next selecting blockchain', error));
33+
};
1234

1335
return (
1436
<>
1537
<WalletSetupSelectBlockchain
1638
back={back}
17-
next={selectedBlockchain === 'Bitcoin' ? () => setIsBitcoinDialogOpen(true) : next}
39+
next={handleNext}
1840
selectedBlockchain={selectedBlockchain}
1941
setSelectedBlockchain={setSelectedBlockchain}
2042
showBitcoinOption={bitcoinWalletsEnabled}
2143
/>
2244
<BitcoinImportMessageDialog
23-
onConfirm={() => {
24-
setIsBitcoinDialogOpen(false);
25-
void next();
26-
}}
45+
onConfirm={handleNext}
2746
onCancel={() => setIsBitcoinDialogOpen(false)}
2847
open={isBitcoinDialogOpen}
2948
setOpen={setIsBitcoinDialogOpen}

0 commit comments

Comments
 (0)