Add New Wallet Adapter in Wallet Service
Adding New Wallet Providers
The system is designed to be provider-agnostic through the adapter pattern. To add a new wallet provider, follow these steps:
1. Create a New Adapter
Create a new adapter file in src/adapters/ (e.g., newprovider.adapter.ts):
import { Injectable } from '@nestjs/common';
import { IWalletAdapter, IWalletAdapterWithOtp } from './interfaces/wallet-adapter.interface';
import { OnboardUserDto } from '../dto/onboard-user.dto';
import { UploadVcDto } from '../dto/upload-vc.dto';
import { WatchVcDto } from '../dto/watch-vc.dto';
import { WatchCallbackDto } from '../dto/watch-callback.dto';
@Injectable()
export class NewProviderAdapter implements IWalletAdapter {
private readonly apiBaseUrl: string;
private readonly apiKey: string;
constructor() {
this.apiBaseUrl = process.env.NEW_PROVIDER_API_BASE || '';
this.apiKey = process.env.NEW_PROVIDER_API_KEY || '';
}
async onboardUser(data: OnboardUserDto) {
// Implement user onboarding logic
// Make API calls to the new provider
// Transform responses to match the interface
}
async getAllVCs(userId: string, token: string) {
// Implement VC listing logic
}
async getVCById(userId: string, vcId: string, token: string) {
// Implement VC retrieval logic
}
async uploadVCFromQR(userId: string, qrData: string, token: string) {
// Implement VC upload logic
}
async login(data: any) {
// Implement login logic
}
// Optional: Implement OTP methods if supported
async verifyLogin?(data: any) {
// Implement OTP verification
}
async resendOtp?(data: any) {
// Implement OTP resend
}
// Optional: Implement watching methods if supported
async watchVC?(data: WatchVcDto) {
// Implement VC watching
}
async processCallback?(data: WatchCallbackDto) {
// Implement callback processing
}
}2. Update the Adapter Factory
Modify src/adapters/adapter.factory.ts:
3. Update Environment Variables
Add new provider configuration to .env.example:
4. Update the Wallet Module
Modify src/wallet/wallet.module.ts:
5. Update Configuration
Set the new provider in your environment:
Last updated
