From 555fa606ea84e3d34494d9d5dba0c1f9c2e9837f Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 11 Dec 2024 15:53:58 -0300 Subject: [PATCH] fix: Update PrivacySetting groupadd type and enhance error handling in fetchInstances route - Changed the type of `groupadd` in `PrivacySetting` from `WAPrivacyValue` to `any` to allow for more flexible data handling. - Wrapped the `fetchInstances` route in a try-catch block to improve error handling and logging, ensuring that any errors are logged and a proper error response is returned to the client. These changes enhance the robustness of the API and improve type flexibility in the DTO. --- src/api/dto/chat.dto.ts | 2 +- src/api/routes/instance.router.ts | 32 ++++++++++++++++++------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/api/dto/chat.dto.ts b/src/api/dto/chat.dto.ts index 7952ddc6..e261cc1b 100644 --- a/src/api/dto/chat.dto.ts +++ b/src/api/dto/chat.dto.ts @@ -84,7 +84,7 @@ class PrivacySetting { status: WAPrivacyValue; online: WAPrivacyOnlineValue; last: WAPrivacyValue; - groupadd: WAPrivacyValue; + groupadd: any; } export class PrivacySettingDto { diff --git a/src/api/routes/instance.router.ts b/src/api/routes/instance.router.ts index d2cc6fb8..d16f9767 100644 --- a/src/api/routes/instance.router.ts +++ b/src/api/routes/instance.router.ts @@ -99,22 +99,28 @@ export class InstanceRouter extends RouterBroker { return res.status(HttpStatus.OK).json(response); }) .get(this.routerPath('fetchInstances', false), ...guards, async (req, res) => { - logger.verbose('request received in fetchInstances'); - logger.verbose('request body: '); - logger.verbose(req.body); + try { + logger.verbose('request received in fetchInstances'); + logger.verbose('request body: '); + logger.verbose(req.body); - const key = req.get('apikey'); + const key = req.get('apikey'); - logger.verbose('request query: '); - logger.verbose(req.query); - const response = await this.dataValidate({ - request: req, - schema: null, - ClassRef: InstanceDto, - execute: (instance) => instanceController.fetchInstances(instance, key), - }); + logger.verbose('request query: '); + logger.verbose(req.query); + const response = await this.dataValidate({ + request: req, + schema: null, + ClassRef: InstanceDto, + execute: (instance) => instanceController.fetchInstances(instance, key), + }); - return res.status(HttpStatus.OK).json(response); + return res.status(HttpStatus.OK).json(response); + } catch (error) { + logger.error('fetchInstances'); + logger.error(error); + return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({ error: true, message: error.message }); + } }) .post(this.routerPath('setPresence'), ...guards, async (req, res) => { logger.verbose('request received in setPresence');