Skip to content

Commit 5400f31

Browse files
committed
feat(endpoint): move setPresence endpoint to instance
1 parent e58f1d7 commit 5400f31

7 files changed

Lines changed: 31 additions & 32 deletions

File tree

src/whatsapp/controllers/chat.controller.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
ProfileStatusDto,
1212
ReadMessageDto,
1313
SendPresenceDto,
14-
SetPresenceDto,
1514
UpdateMessageDto,
1615
WhatsAppNumberDto,
1716
} from '../dto/chat.dto';
@@ -86,11 +85,6 @@ export class ChatController {
8685
return await this.waMonitor.waInstances[instanceName].sendPresence(data);
8786
}
8887

89-
public async setPresence({ instanceName }: InstanceDto, data: SetPresenceDto) {
90-
logger.verbose('requested sendPresence from ' + instanceName + ' instance');
91-
return await this.waMonitor.waInstances[instanceName].setPresence(data);
92-
}
93-
9488
public async fetchPrivacySettings({ instanceName }: InstanceDto) {
9589
logger.verbose('requested fetchPrivacySettings from ' + instanceName + ' instance');
9690
return await this.waMonitor.waInstances[instanceName].fetchPrivacySettings();

src/whatsapp/controllers/instance.controller.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ConfigService, HttpServer, WaBusiness } from '../../config/env.config';
77
import { Logger } from '../../config/logger.config';
88
import { BadRequestException, InternalServerErrorException } from '../../exceptions';
99
import { RedisCache } from '../../libs/redis.client';
10-
import { InstanceDto } from '../dto/instance.dto';
10+
import { InstanceDto, SetPresenceDto } from '../dto/instance.dto';
1111
import { RepositoryBroker } from '../repository/repository.manager';
1212
import { AuthService, OldToken } from '../services/auth.service';
1313
import { CacheService } from '../services/cache.service';
@@ -656,6 +656,11 @@ export class InstanceController {
656656
return this.waMonitor.instanceInfo();
657657
}
658658

659+
public async setPresence({ instanceName }: InstanceDto, data: SetPresenceDto) {
660+
this.logger.verbose('requested sendPresence from ' + instanceName + ' instance');
661+
return await this.waMonitor.waInstances[instanceName].setPresence(data);
662+
}
663+
659664
public async logout({ instanceName }: InstanceDto) {
660665
this.logger.verbose('requested logout from ' + instanceName + ' instance');
661666
const { instance } = await this.connectionState({ instanceName });

src/whatsapp/dto/chat.dto.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ export class SendPresenceDto extends Metadata {
110110
};
111111
}
112112

113-
export class SetPresenceDto {
114-
presence: WAPresence;
115-
}
116-
117113
export class UpdateMessageDto extends Metadata {
118114
number: string;
119115
key: proto.IMessageKey;

src/whatsapp/dto/instance.dto.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { WAPresence } from "@whiskeysockets/baileys";
2+
13
export class InstanceDto {
24
instanceName: string;
35
instanceId?: string;
@@ -40,3 +42,7 @@ export class InstanceDto {
4042
typebot_listening_from_me?: boolean;
4143
proxy?: string;
4244
}
45+
46+
export class SetPresenceDto {
47+
presence: WAPresence;
48+
}

src/whatsapp/routers/chat.router.ts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import {
3232
ProfileStatusDto,
3333
ReadMessageDto,
3434
SendPresenceDto,
35-
SetPresenceDto,
3635
UpdateMessageDto,
3736
WhatsAppNumberDto,
3837
} from '../dto/chat.dto';
@@ -252,22 +251,6 @@ export class ChatRouter extends RouterBroker {
252251

253252
return res.status(HttpStatus.CREATED).json(response);
254253
})
255-
.post(this.routerPath('setPresence'), ...guards, async (req, res) => {
256-
logger.verbose('request received in setPresence');
257-
logger.verbose('request body: ');
258-
logger.verbose(req.body);
259-
260-
logger.verbose('request query: ');
261-
logger.verbose(req.query);
262-
const response = await this.dataValidate<null>({
263-
request: req,
264-
schema: presenceOnlySchema,
265-
ClassRef: SetPresenceDto,
266-
execute: (instance, data) => chatController.setPresence(instance, data),
267-
});
268-
269-
return res.status(HttpStatus.CREATED).json(response);
270-
})
271254
// Profile routes
272255
.get(this.routerPath('fetchPrivacySettings'), ...guards, async (req, res) => {
273256
logger.verbose('request received in fetchPrivacySettings');

src/whatsapp/routers/instance.router.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { RequestHandler, Router } from 'express';
33
import { Auth, ConfigService, Database } from '../../config/env.config';
44
import { Logger } from '../../config/logger.config';
55
import { dbserver } from '../../libs/db.connect';
6-
import { instanceNameSchema, oldTokenSchema } from '../../validate/validate.schema';
6+
import {instanceNameSchema, oldTokenSchema, presenceOnlySchema} from '../../validate/validate.schema';
77
import { RouterBroker } from '../abstract/abstract.router';
8-
import { InstanceDto } from '../dto/instance.dto';
8+
import { InstanceDto, SetPresenceDto } from '../dto/instance.dto';
99
import { OldToken } from '../services/auth.service';
1010
import { instanceController } from '../whatsapp.module';
1111
import { HttpStatus } from './index.router';
@@ -98,6 +98,22 @@ export class InstanceRouter extends RouterBroker {
9898

9999
return res.status(HttpStatus.OK).json(response);
100100
})
101+
.post(this.routerPath('setPresence'), ...guards, async (req, res) => {
102+
logger.verbose('request received in setPresence');
103+
logger.verbose('request body: ');
104+
logger.verbose(req.body);
105+
106+
logger.verbose('request query: ');
107+
logger.verbose(req.query);
108+
const response = await this.dataValidate<null>({
109+
request: req,
110+
schema: presenceOnlySchema,
111+
ClassRef: SetPresenceDto,
112+
execute: (instance, data) => instanceController.setPresence(instance, data),
113+
});
114+
115+
return res.status(HttpStatus.CREATED).json(response);
116+
})
101117
.delete(this.routerPath('logout'), ...guards, async (req, res) => {
102118
logger.verbose('request received in logoutInstances');
103119
logger.verbose('request body: ');

src/whatsapp/services/whatsapp.baileys.service.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ import {
7272
PrivacySettingDto,
7373
ReadMessageDto,
7474
SendPresenceDto,
75-
SetPresenceDto,
7675
UpdateMessageDto,
7776
WhatsAppNumberDto,
7877
} from '../dto/chat.dto';
@@ -90,7 +89,7 @@ import {
9089
GroupUpdateParticipantDto,
9190
GroupUpdateSettingDto,
9291
} from '../dto/group.dto';
93-
import { InstanceDto } from '../dto/instance.dto';
92+
import { InstanceDto, SetPresenceDto } from '../dto/instance.dto';
9493
import { HandleLabelDto, LabelDto } from '../dto/label.dto';
9594
import {
9695
ContactMessage,

0 commit comments

Comments
 (0)