Skip to content

feat(blockchain): emit wallet_linked and wallet_link_failed events an… - #598

Merged
A6dulmalik merged 1 commit into
MindBlockLabs:mainfrom
sublime247:feat/blockchain-analytics-listener
Jul 25, 2026
Merged

feat(blockchain): emit wallet_linked and wallet_link_failed events an…#598
A6dulmalik merged 1 commit into
MindBlockLabs:mainfrom
sublime247:feat/blockchain-analytics-listener

Conversation

@sublime247

Copy link
Copy Markdown
Contributor

Closes #504

Description

Instrumented the blockchain module using NestJS EventEmitter2 to emit wallet_linked and wallet_link_failed events asynchronously without tightly coupling blockchain to analytics. Added BlockchainAnalyticsListener in the analytics module to persist these events directly into the AnalyticsEvent database table.

Key Changes

  • Blockchain Module:
    • Added LinkWalletDto to validate POST /blockchain/wallet/link requests.
    • Implemented linkWallet in BlockchainService that fires wallet_linked (on success) or wallet_link_failed (on invalid address/failure) using non-blocking, fire-and-forget setImmediate event emission.
  • Analytics Listener:
    • Created BlockchainAnalyticsListener in backend/src/analytics/listeners/blockchain-analytics.listener.ts listening to @OnEvent('wallet_linked') and @OnEvent('wallet_link_failed').
    • Registered BlockchainAnalyticsListener in AnalyticsModule providers and exports.
  • Unit Tests:
    • Updated blockchain.service.spec.ts asserting fire-and-forget event payloads.
    • Added blockchain-analytics.listener.spec.ts asserting event entity creation and persistence.

Acceptance Criteria Checklist

  • wallet_linked event is emitted at the correct point in the blockchain flow on successful wallet linking.
  • wallet_link_failed event is emitted when wallet linking fails or is given an invalid address.
  • BlockchainAnalyticsListener persists events with relevant metadata (userId, entityId, payload, timestamp).
  • Emitting events is non-blocking and fire-and-forget (setImmediate wrapping), preventing listener failures from blocking request execution.
  • Unit tests assert event emission payload shapes and persistence behavior.

Verification & Testing Performed

Unit Tests (6/6 Passed)

npx jest src/blockchain/provider/blockchain.service.spec.ts src/analytics/listeners/blockchain-analytics.listener.spec.ts

@vercel

vercel Bot commented Jul 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
mind-block-app-frontend Skipped Skipped Jul 25, 2026 7:30am

@sublime247

sublime247 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

@A6dulmalik kindly review, please check you telegram. sent you a mesage

@sublime247

Copy link
Copy Markdown
Contributor Author

@phertyameen can you please review this

@A6dulmalik
A6dulmalik merged commit 464caf7 into MindBlockLabs:main Jul 25, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Emit analytics events for wallet linking (blockchain module)

2 participants