@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
TypeScript
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
}