/opt/mawid/apps/api/src/whatsapp
Edit: /opt/mawid/apps/api/src/whatsapp/wa-core.module.ts (1352B)
import { Module, type Provider } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Queue } from 'bullmq';
import IORedis from 'ioredis';
import { OwnerNotifierService } from './owner-notifier.service';
import { MetaWaHttpClient, StubWaHttpClient, WA_HTTP_CLIENT } from './wa-http.client';
import { WaOutboundWorker } from './wa-outbound.worker';
import { WA_OUTBOUND_QUEUE, WA_OUTBOUND_QUEUE_NAME } from './wa-queue';
import { WaSenderService } from './wa-sender.service';
const httpClientProvider: Provider = {
provide: WA_HTTP_CLIENT,
inject: [ConfigService],
useFactory: (config: ConfigService) => {
const token = config.get
('WA_ACCESS_TOKEN');
return token ? new MetaWaHttpClient(token) : new StubWaHttpClient();
},
};
const queueProvider: Provider = {
provide: WA_OUTBOUND_QUEUE,
inject: [ConfigService],
useFactory: (config: ConfigService) =>
new Queue(WA_OUTBOUND_QUEUE_NAME, {
connection: new IORedis(config.getOrThrow('REDIS_URL'), {
maxRetriesPerRequest: null,
}),
}),
};
/** Outbound WhatsApp plumbing without inbound/agent dependencies. */
@Module({
providers: [httpClientProvider, queueProvider, WaSenderService, WaOutboundWorker, OwnerNotifierService],
exports: [WaSenderService, OwnerNotifierService],
})
export class WaCoreModule {}