diff --git a/packages/appkit/src/core/app-kit/services/app-kit.ts b/packages/appkit/src/core/app-kit/services/app-kit.ts index 93ec8a986..3c7e9f0f7 100644 --- a/packages/appkit/src/core/app-kit/services/app-kit.ts +++ b/packages/appkit/src/core/app-kit/services/app-kit.ts @@ -7,7 +7,7 @@ */ import type { NetworkManager } from '@ton/walletkit'; -import { Network, SwapManager } from '@ton/walletkit'; +import { Network, SwapManager, AnalyticsManager } from '@ton/walletkit'; import type { Provider } from 'src/types/provider'; import type { AppKitConfig } from '../types/config'; @@ -28,6 +28,7 @@ export class AppKit { readonly connectors: Connector[] = []; readonly walletsManager: WalletsManager; readonly swapManager: SwapManager; + readonly analyticsManager?: AnalyticsManager; readonly networkManager: NetworkManager; readonly config: AppKitConfig; @@ -48,6 +49,19 @@ export class AppKit { this.walletsManager = new WalletsManager(this.emitter); this.swapManager = new SwapManager(); + // Analytics + if (config.analytics?.enabled) { + this.analyticsManager = new AnalyticsManager(config.analytics); + + // Track connection-completed event + this.emitter.on(CONNECTOR_EVENTS.CONNECTED, () => { + if (this.analyticsManager) { + const analytics = this.analyticsManager.scoped(); + analytics.emitConnectionCompleted({}); + } + }); + } + if (config.connectors) { config.connectors.forEach((connector) => { this.addConnector(connector); diff --git a/packages/appkit/src/core/app-kit/types/config.ts b/packages/appkit/src/core/app-kit/types/config.ts index 75b69617e..8996d3876 100644 --- a/packages/appkit/src/core/app-kit/types/config.ts +++ b/packages/appkit/src/core/app-kit/types/config.ts @@ -6,7 +6,7 @@ * */ -import type { NetworkAdapters } from '@ton/walletkit'; +import type { NetworkAdapters, AnalyticsManagerOptions } from '@ton/walletkit'; import type { Connector } from '../../../types/connector'; import type { Provider } from '../../../types/provider'; @@ -25,4 +25,11 @@ export interface AppKitConfig { networks?: NetworkAdapters; connectors?: Connector[]; providers?: Provider[]; + + /** + * Analytics configuration + */ + analytics?: AnalyticsManagerOptions & { + enabled?: boolean; + }; } diff --git a/packages/walletkit/src/index.ts b/packages/walletkit/src/index.ts index 6d0f5c388..e740f5ae8 100644 --- a/packages/walletkit/src/index.ts +++ b/packages/walletkit/src/index.ts @@ -104,6 +104,7 @@ export { Transport } from './bridge/transport/Transport'; export { TONCONNECT_BRIDGE_EVENT } from './bridge/utils/messageTypes'; export { RESTORE_CONNECTION_TIMEOUT, DEFAULT_REQUEST_TIMEOUT } from './bridge/utils/timeouts'; export { CreateTonProofMessageBytes } from './utils/tonProof'; +export { AnalyticsManager } from './analytics'; export type { AnalyticsAppInfo, AnalyticsManagerOptions } from './analytics'; // API Client types (ApiClient is exported above)