From 18990f874f9faf2423c9f6a024bfc7d72f8b4c9e Mon Sep 17 00:00:00 2001 From: Alex Sandro <63991021+laxeder@users.noreply.github.com> Date: Fri, 19 Jan 2024 13:01:20 -0300 Subject: [PATCH] feat: Add max msg retry count (#572) --- README.md | 2 ++ src/Defaults/index.ts | 1 + src/Socket/messages-recv.ts | 5 +++-- src/Types/Socket.ts | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e65108d..ea5ef26 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,8 @@ type SocketConfig = { customUploadHosts: MediaConnInfo['hosts'] /** time to wait between sending new retry requests */ retryRequestDelayMs: number + /** max msg retry count */ + maxMsgRetryCount: number /** time to wait for the generation of the next QR in ms */ qrTimeout?: number; /** provide an auth state object to maintain the auth state */ diff --git a/src/Defaults/index.ts b/src/Defaults/index.ts index a5ec526..821c024 100644 --- a/src/Defaults/index.ts +++ b/src/Defaults/index.ts @@ -65,6 +65,7 @@ export const DEFAULT_CONNECTION_CONFIG: SocketConfig = { defaultQueryTimeoutMs: 60_000, customUploadHosts: [], retryRequestDelayMs: 250, + maxMsgRetryCount: 5, fireInitQueries: true, auth: undefined as unknown as AuthenticationState, markOnlineOnConnect: true, diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index e9c4cfa..33aed5c 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -45,6 +45,7 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { const { logger, retryRequestDelayMs, + maxMsgRetryCount, getMessage, shouldIgnoreJid } = config @@ -130,7 +131,7 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { const msgId = node.attrs.id let retryCount = msgRetryCache.get(msgId) || 0 - if(retryCount >= 5) { + if(retryCount >= maxMsgRetryCount) { logger.debug({ retryCount, msgId }, 'reached retry limit, clearing') msgRetryCache.del(msgId) return @@ -503,7 +504,7 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { const willSendMessageAgain = (id: string, participant: string) => { const key = `${id}:${participant}` const retryCount = msgRetryCache.get(key) || 0 - return retryCount < 5 + return retryCount < maxMsgRetryCount } const updateSendMessageAgainCount = (id: string, participant: string) => { diff --git a/src/Types/Socket.ts b/src/Types/Socket.ts index d093505..ab41b4a 100644 --- a/src/Types/Socket.ts +++ b/src/Types/Socket.ts @@ -51,6 +51,8 @@ export type SocketConfig = { customUploadHosts: MediaConnInfo['hosts'] /** time to wait between sending new retry requests */ retryRequestDelayMs: number + /** max retry count */ + maxMsgRetryCount: number /** time to wait for the generation of the next QR in ms */ qrTimeout?: number /** provide an auth state object to maintain the auth state */