UNPKG

@vreden/meta

Version:

Baileys is a lightweight JavaScript library for interacting with the WhatsApp Web API using WebSocket.

88 lines (81 loc) 2.36 kB
import { proto } from '../../WAProto' import { ILogger } from './logger' export interface RecentMessageKey { to: string id: string } export interface RecentMessage { message: proto.IMessage timestamp: number } export interface SessionRecreateHistory { [jid: string]: number } export interface RetryCounter { [messageId: string]: number } export interface PendingPhoneRequest { [messageId: string]: NodeJS.Timeout } export interface RetryStatistics { totalRetries: number successfulRetries: number failedRetries: number mediaRetries: number sessionRecreations: number phoneRequests: number } export declare class MessageRetryManager { private logger private recentMessagesMap private sessionRecreateHistory private retryCounters private pendingPhoneRequests private readonly maxMsgRetryCount private statistics constructor(logger: ILogger, maxMsgRetryCount: number) /** * Add a recent message to the cache for retry handling */ addRecentMessage(to: string, id: string, message: proto.IMessage): void /** * Get a recent message from the cache */ getRecentMessage(to: string, id: string): RecentMessage | undefined /** * Check if a session should be recreated based on retry count and history */ shouldRecreateSession(jid: string, retryCount: number, hasSession: boolean): { reason: string recreate: boolean } /** * Increment retry counter for a message */ incrementRetryCount(messageId: string): number /** * Get retry count for a message */ getRetryCount(messageId: string): number /** * Check if message has exceeded maximum retry attempts */ hasExceededMaxRetries(messageId: string): boolean /** * Mark retry as successful */ markRetrySuccess(messageId: string): void /** * Mark retry as failed */ markRetryFailed(messageId: string): void /** * Schedule a phone request with delay */ schedulePhoneRequest(messageId: string, callback: () => void, delay?: number): void /** * Cancel pending phone request */ cancelPendingPhoneRequest(messageId: string): void private keyToString }