From 394365bce3401e979dabdb760ce037f31fa350d9 Mon Sep 17 00:00:00 2001 From: Maxime Beauchamp <15185355+baktun14@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:42:16 -0500 Subject: [PATCH 1/2] fix(wallet): proper custodial wallet connect event --- .../CustomChainProvider.tsx | 8 +++++++ .../context/WalletProvider/WalletProvider.tsx | 21 +++++++------------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/apps/deploy-web/src/context/CustomChainProvider/CustomChainProvider.tsx b/apps/deploy-web/src/context/CustomChainProvider/CustomChainProvider.tsx index 80488f5a2..bca3f60f6 100644 --- a/apps/deploy-web/src/context/CustomChainProvider/CustomChainProvider.tsx +++ b/apps/deploy-web/src/context/CustomChainProvider/CustomChainProvider.tsx @@ -12,10 +12,13 @@ import { wallets as leap } from "@cosmos-kit/leap"; import { ChainProvider, DefaultModal } from "@cosmos-kit/react"; import { useChain } from "@cosmos-kit/react"; import { useAtom } from "jotai"; +import { event } from "nextjs-google-analytics"; import { akash, akashSandbox, akashTestnet, assetLists } from "@src/chains"; import networkStore from "@src/store/networkStore"; import walletStore from "@src/store/walletStore"; +import { AnalyticsCategory } from "@src/types/analytics"; +import { AnalyticsEvents } from "@src/types/analytics"; import { customRegistry } from "@src/utils/customRegistry"; type Props = { @@ -78,6 +81,11 @@ const ModalWrapper = (props: WalletModalProps) => { if (isWalletModalOpen && !props.isOpen && isWalletConnected) { setSelectedWalletType("custodial"); + + event(AnalyticsEvents.CONNECT_WALLET, { + category: AnalyticsCategory.WALLET, + label: "Connect wallet" + }); } }, [isWalletModalOpen, props.isOpen, isWalletConnected]); diff --git a/apps/deploy-web/src/context/WalletProvider/WalletProvider.tsx b/apps/deploy-web/src/context/WalletProvider/WalletProvider.tsx index 39a468806..2091c8238 100644 --- a/apps/deploy-web/src/context/WalletProvider/WalletProvider.tsx +++ b/apps/deploy-web/src/context/WalletProvider/WalletProvider.tsx @@ -43,7 +43,6 @@ type ContextType = { walletName: string; isWalletConnected: boolean; isWalletLoaded: boolean; - connectWallet: () => Promise; connectManagedWallet: () => void; logout: () => void; signAndBroadcastTx: (msgs: EncodeObject[]) => Promise; @@ -120,6 +119,13 @@ export const WalletProvider = ({ children }) => { }); } + if (selectedWalletType === "managed" && userWallet.isWalletConnected) { + event(AnalyticsEvents.CONNECT_WALLET, { + category: AnalyticsCategory.WALLET, + label: "Connect wallet" + }); + } + setSelectedWalletType(prev => (prev === "custodial" ? "managed" : "custodial")); } @@ -145,18 +151,6 @@ export const WalletProvider = ({ children }) => { } } - async function connectWallet() { - console.log("Connecting wallet with CosmosKit..."); - await userWallet.connect(); - - await loadWallet(); - - event(AnalyticsEvents.CONNECT_WALLET, { - category: AnalyticsCategory.WALLET, - label: "Connect wallet" - }); - } - async function loadWallet(): Promise { const networkId = isManaged && selectedNetworkId !== browserEnvConfig.NEXT_PUBLIC_MANAGED_WALLET_NETWORK_ID @@ -309,7 +303,6 @@ export const WalletProvider = ({ children }) => { walletName: username as string, isWalletConnected: isWalletConnected, isWalletLoaded: isWalletLoaded, - connectWallet, connectManagedWallet, logout, signAndBroadcastTx, From 28ecf9e2e338a4b63af1a726151b433646bf036f Mon Sep 17 00:00:00 2001 From: Maxime Beauchamp <15185355+baktun14@users.noreply.github.com> Date: Fri, 7 Feb 2025 09:29:34 -0500 Subject: [PATCH 2/2] feat(analytics): added connect managed wallet event --- apps/deploy-web/src/hooks/useManagedWallet.ts | 9 +++++++++ apps/deploy-web/src/types/analytics.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/apps/deploy-web/src/hooks/useManagedWallet.ts b/apps/deploy-web/src/hooks/useManagedWallet.ts index d60a2585a..e88f79d4d 100644 --- a/apps/deploy-web/src/hooks/useManagedWallet.ts +++ b/apps/deploy-web/src/hooks/useManagedWallet.ts @@ -1,11 +1,14 @@ import { useEffect, useMemo } from "react"; import { useAtom } from "jotai"; +import { event } from "nextjs-google-analytics"; import { browserEnvConfig } from "@src/config/browser-env.config"; import { useSelectedChain } from "@src/context/CustomChainProvider"; import { useUser } from "@src/hooks/useUser"; import { useCreateManagedWalletMutation, useManagedWalletQuery } from "@src/queries/useManagedWalletQuery"; import walletStore from "@src/store/walletStore"; +import { AnalyticsEvents } from "@src/types/analytics"; +import { AnalyticsCategory } from "@src/types/analytics"; import { deleteManagedWalletFromStorage, ensureUserManagedWalletOwnership, getSelectedStorageWallet, updateStorageManagedWallet } from "@src/utils/walletUtils"; import { useCustomUser } from "./useCustomUser"; @@ -27,11 +30,17 @@ export const useManagedWallet = () => { if (selectedWalletType === "custodial" && wallet && !userWallet.isWalletConnected && !userWallet.isWalletConnecting) { setSelectedWalletType("managed"); } + + event(AnalyticsEvents.CONNECT_MANAGED_WALLET, { + category: AnalyticsCategory.WALLET, + label: "Connect managed wallet" + }); } }); const { mutate: create, data: created, isLoading: isCreating, isSuccess: isCreated } = useCreateManagedWalletMutation(); const wallet = useMemo(() => queried || created, [queried, created]); const isLoading = isFetching || isCreating; + const [, setIsSignedInWithTrial] = useAtom(walletStore.isSignedInWithTrial); const selected = getSelectedStorageWallet(); diff --git a/apps/deploy-web/src/types/analytics.ts b/apps/deploy-web/src/types/analytics.ts index e6e774239..b488f9812 100644 --- a/apps/deploy-web/src/types/analytics.ts +++ b/apps/deploy-web/src/types/analytics.ts @@ -1,5 +1,6 @@ export enum AnalyticsEvents { CONNECT_WALLET = "connect_wallet", + CONNECT_MANAGED_WALLET = "connect_managed_wallet", DISCONNECT_WALLET = "disconnect_wallet", SUCCESSFUL_TX = "successful_transaction", FAILED_TX = "failed_tx",