Skip to content

Commit 4020bc9

Browse files
authored
feat(extension): track manual re-sync and hd wallet discovery (#712)
1 parent 5b71918 commit 4020bc9

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

apps/browser-extension-wallet/src/views/browser-view/features/settings/components/SettingsWalletBase.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { useAnalyticsContext, useBackgroundServiceAPIContext } from '@providers'
1515
import { useSearchParams, useObservable, Button } from '@lace/common';
1616
import { walletRoutePaths } from '@routes/wallet-paths';
1717
import { PostHogAction } from '@providers/AnalyticsProvider/analyticsTracker';
18+
import uniq from 'lodash/uniq';
1819

1920
const { Title } = Typography;
2021

@@ -58,7 +59,7 @@ export const SettingsWalletBase = <AdditionalDrawers extends string>({
5859

5960
const { t } = useTranslation();
6061
const { addressesDiscoverer } = useAddressesDiscoverer();
61-
const { environmentName, inMemoryWallet } = useWalletStore();
62+
const { environmentName, inMemoryWallet, walletInfo } = useWalletStore();
6263
const { AVAILABLE_CHAINS } = config();
6364
const unspendable = useObservable(inMemoryWallet.balance.utxo.unspendable$);
6465

@@ -116,7 +117,18 @@ export const SettingsWalletBase = <AdditionalDrawers extends string>({
116117
<Button
117118
size="medium"
118119
className={styles.settingsButton}
119-
onClick={() => addressesDiscoverer.discover()}
120+
onClick={async () => {
121+
analytics.sendEventToPostHog(PostHogAction.SettingsWalletHdWalletSyncSyncClick);
122+
123+
const oldHdAddressesCount = uniq((walletInfo?.addresses ?? []).map(({ index }) => index)).length;
124+
const newAddresses = await addressesDiscoverer.discover();
125+
const newHdAddressesCount = uniq(newAddresses.map(({ index }) => index)).length;
126+
const newHdWalletAddressesDiscovered = newHdAddressesCount > oldHdAddressesCount;
127+
128+
if (newHdWalletAddressesDiscovered) {
129+
analytics.sendEventToPostHog(PostHogAction.SettingsWalletHdWalletSyncSyncNewAddresses);
130+
}
131+
}}
120132
block={popupView}
121133
data-testid="settings-wallet-wallet-sync-cta"
122134
>

apps/browser-extension-wallet/src/views/browser-view/features/wallet-setup/components/HardwareWalletFlow.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { useTranslation } from 'react-i18next';
2222
import {
2323
AnalyticsEventNames,
2424
EnhancedAnalyticsOptInStatus,
25+
PostHogAction,
2526
postHogOnboardingActions
2627
} from '@providers/AnalyticsProvider/analyticsTracker';
2728
import { config } from '@src/config';
@@ -174,6 +175,14 @@ export const HardwareWalletFlow = ({
174175
setDoesUserAllowAnalytics(
175176
isAnalyticsAccepted ? EnhancedAnalyticsOptInStatus.OptedIn : EnhancedAnalyticsOptInStatus.OptedOut
176177
);
178+
const addressDiscoverySubscriber = wallet.asyncKeyAgent.knownAddresses$.subscribe((addresses) => {
179+
if (addresses.length === 0) return;
180+
const hdWalletDiscovered = addresses.some((addr) => addr.index > 0);
181+
if (hdWalletDiscovered) {
182+
analytics.sendEventToPostHog(PostHogAction.OnboardingRestoreHdWallet);
183+
}
184+
addressDiscoverySubscriber.unsubscribe();
185+
});
177186
await analytics.setOptedInForEnhancedAnalytics(
178187
isAnalyticsAccepted ? EnhancedAnalyticsOptInStatus.OptedIn : EnhancedAnalyticsOptInStatus.OptedOut
179188
);

apps/browser-extension-wallet/src/views/browser-view/features/wallet-setup/components/WalletSetupWizard.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { WarningModal } from '@src/views/browser-view/components/WarningModal';
2323
import {
2424
AnalyticsEventNames,
2525
EnhancedAnalyticsOptInStatus,
26+
PostHogAction,
2627
postHogOnboardingActions,
2728
UserTrackingType
2829
} from '@providers/AnalyticsProvider/analyticsTracker';
@@ -290,6 +291,15 @@ export const WalletSetupWizard = ({
290291
await analytics.setOptedInForEnhancedAnalytics(
291292
isAnalyticsAccepted ? EnhancedAnalyticsOptInStatus.OptedIn : EnhancedAnalyticsOptInStatus.OptedOut
292293
);
294+
const addressDiscoverySubscriber = wallet.wallet.asyncKeyAgent.knownAddresses$.subscribe((addresses) => {
295+
if (addresses.length === 0) return;
296+
const hdWalletDiscovered = addresses.some((addr) => addr.index > 0);
297+
if (setupType === SetupType.RESTORE && hdWalletDiscovered) {
298+
analytics.sendEventToPostHog(PostHogAction.OnboardingRestoreHdWallet);
299+
}
300+
addressDiscoverySubscriber.unsubscribe();
301+
});
302+
293303
if (setupType === SetupType.FORGOT_PASSWORD) {
294304
deleteFromLocalStorage('isForgotPasswordFlow');
295305
goToMyWallet(wallet);

packages/common/src/analytics/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export enum PostHogAction {
2323
OnboardingRestoreEnterPassphrase09NextClick = 'onboarding | restore wallet | enter passphrase #09 | next | click',
2424
OnboardingRestoreEnterPassphrase17NextClick = 'onboarding | restore wallet | enter passphrase #17 | next | click',
2525
OnboardingRestoreWalletNamePasswordNextClick = 'onboarding | restore wallet | wallet name & password | next | click',
26+
OnboardingRestoreHdWallet = 'onboarding | restore wallet | hd wallet',
2627
// Create new wallet
2728
OnboardingCreateDoneGoToWallet = 'onboarding | new wallet | all done | go to my wallet | click',
2829
OnboardingCreateAnalyticsAgreeClick = 'onboarding | new wallet | analytics | agree | click',
@@ -161,6 +162,8 @@ export enum PostHogAction {
161162
SettingsAnalyticsAgreeClick = 'settings | analytics | agree | click',
162163
SettingsAnalyticsSkipClick = 'settings | analytics | skip | click',
163164
SettingsFaqsClick = 'settings | faqs | click',
165+
SettingsWalletHdWalletSyncSyncClick = 'settings | wallet | hd wallet sync | sync | click',
166+
SettingsWalletHdWalletSyncSyncNewAddresses = 'settings | wallet | hd wallet sync | sync | new addresses',
164167
// Recieve section
165168
ReceiveClick = 'receive | receive | click',
166169
ReceiveCopyAddressIconClick = 'receive | receive | copy address icon | click',

0 commit comments

Comments
 (0)