From f20bb3750902461e8a3320ef42d0fc0ce8655ea6 Mon Sep 17 00:00:00 2001 From: Ben Date: Sat, 20 Jun 2026 14:43:11 -0400 Subject: [PATCH] Add Redis client presence kill switch --- src/services/redis-messaging.service.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/services/redis-messaging.service.ts b/src/services/redis-messaging.service.ts index 9c27a96..817e615 100644 --- a/src/services/redis-messaging.service.ts +++ b/src/services/redis-messaging.service.ts @@ -35,11 +35,13 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { private subscriber: RedisClientType; private connected = false; private readonly clientPresenceTtlSeconds: number; + private readonly clientPresenceEnabled: boolean; constructor( private readonly configService: ConfigService, ) { this.clientPresenceTtlSeconds = this.readPositiveInt('CLIENT_PRESENCE_TTL_SECONDS', CLIENT_PRESENCE_TTL_SECONDS); + this.clientPresenceEnabled = this.configService.get('CLIENT_PRESENCE_ENABLED') !== 'false'; } public async onModuleInit() { @@ -139,6 +141,9 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { } public async setClientPresence(presence: ClientPresence): Promise { + if (!this.clientPresenceEnabled) { + return; + } if (!await this.ensureConnected()) { return; } @@ -159,6 +164,9 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { } public async removeClientPresence(clientId: string, address?: string): Promise { + if (!this.clientPresenceEnabled) { + return; + } if (!await this.ensureConnected()) { return; } @@ -181,6 +189,9 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { } public async getClientPresence(clientId: string): Promise { + if (!this.clientPresenceEnabled) { + return null; + } if (!await this.ensureConnected()) { return null; } @@ -190,6 +201,9 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { } public async getClientPresenceByAddress(address: string): Promise { + if (!this.clientPresenceEnabled) { + return []; + } if (!await this.ensureConnected()) { return []; } @@ -198,6 +212,9 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { } public async getAllClientPresence(): Promise { + if (!this.clientPresenceEnabled) { + return []; + } if (!await this.ensureConnected()) { return []; } @@ -206,6 +223,9 @@ export class RedisMessagingService implements OnModuleInit, OnModuleDestroy { } public async clearClientPresence(): Promise { + if (!this.clientPresenceEnabled) { + return; + } if (!await this.ensureConnected()) { return; }