diff --git a/CHANGELOG.md b/CHANGELOG.md index 861ecbd7..b7f1cf22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * Route to fetch all privacy settings * Route to update the privacy settings * Route to update group subject +* Route to update group description ### Fixed diff --git a/src/validate/validate.schema.ts b/src/validate/validate.schema.ts index 5365bb5b..d74784b2 100644 --- a/src/validate/validate.schema.ts +++ b/src/validate/validate.schema.ts @@ -702,6 +702,17 @@ export const updateGroupSubjectSchema: JSONSchema7 = { ...isNotEmpty('groupJid', 'subject'), }; +export const updateGroupDescriptionSchema: JSONSchema7 = { + $id: v4(), + type: 'object', + properties: { + groupJid: { type: 'string' }, + description: { type: 'string' }, + }, + required: ['groupJid', 'description'], + ...isNotEmpty('groupJid', 'description'), +}; + // Webhook Schema export const webhookSchema: JSONSchema7 = { $id: v4(), diff --git a/src/whatsapp/controllers/group.controller.ts b/src/whatsapp/controllers/group.controller.ts index 51e4e3bf..0eefa6f7 100644 --- a/src/whatsapp/controllers/group.controller.ts +++ b/src/whatsapp/controllers/group.controller.ts @@ -1,5 +1,6 @@ import { CreateGroupDto, + GroupDescriptionDto, GroupInvite, GroupJid, GroupPictureDto, @@ -30,6 +31,15 @@ export class GroupController { ); } + public async updateGroupDescription( + instance: InstanceDto, + update: GroupDescriptionDto, + ) { + return await this.waMonitor.waInstances[instance.instanceName].updateGroupDescription( + update, + ); + } + public async findGroupInfo(instance: InstanceDto, groupJid: GroupJid) { return await this.waMonitor.waInstances[instance.instanceName].findGroup(groupJid); } diff --git a/src/whatsapp/dto/group.dto.ts b/src/whatsapp/dto/group.dto.ts index db3e1ed8..aa76fe90 100644 --- a/src/whatsapp/dto/group.dto.ts +++ b/src/whatsapp/dto/group.dto.ts @@ -14,6 +14,11 @@ export class GroupSubjectDto { subject: string; } +export class GroupDescriptionDto { + groupJid: string; + description: string; +} + export class GroupJid { groupJid: string; } diff --git a/src/whatsapp/routers/group.router.ts b/src/whatsapp/routers/group.router.ts index facb9dea..a15f278b 100644 --- a/src/whatsapp/routers/group.router.ts +++ b/src/whatsapp/routers/group.router.ts @@ -7,6 +7,7 @@ import { toggleEphemeralSchema, updateGroupPictureSchema, updateGroupSubjectSchema, + updateGroupDescriptionSchema, groupInviteSchema, } from '../../validate/validate.schema'; import { RouterBroker } from '../abstract/abstract.router'; @@ -16,6 +17,7 @@ import { GroupJid, GroupPictureDto, GroupSubjectDto, + GroupDescriptionDto, GroupUpdateParticipantDto, GroupUpdateSettingDto, GroupToggleEphemeralDto, @@ -57,6 +59,17 @@ export class GroupRouter extends RouterBroker { res.status(HttpStatus.CREATED).json(response); }) + .put(this.routerPath('updateGroupDescription'), ...guards, async (req, res) => { + const response = await this.groupValidate({ + request: req, + schema: updateGroupDescriptionSchema, + ClassRef: GroupDescriptionDto, + execute: (instance, data) => + groupController.updateGroupDescription(instance, data), + }); + + res.status(HttpStatus.CREATED).json(response); + }) .get(this.routerPath('findGroupInfos'), ...guards, async (req, res) => { const response = await this.groupValidate({ request: req, diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index e271f475..8263cf85 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -101,6 +101,7 @@ import { GroupUpdateSettingDto, GroupToggleEphemeralDto, GroupSubjectDto, + GroupDescriptionDto, } from '../dto/group.dto'; import { MessageUpQuery } from '../repository/messageUp.repository'; import { useMultiFileAuthStateDb } from '../../utils/use-multi-file-auth-state-db'; @@ -1652,6 +1653,19 @@ export class WAStartupService { } } + public async updateGroupDescription(data: GroupDescriptionDto) { + try { + await this.client.groupUpdateDescription(data.groupJid, data.description); + + return { update: 'success' }; + } catch (error) { + throw new InternalServerErrorException( + 'Error updating group description', + error.toString(), + ); + } + } + public async findGroup(id: GroupJid, reply: 'inner' | 'out' = 'out') { try { return await this.client.groupMetadata(id.groupJid);