@badzz88/baileys 8.5.6 → 8.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/README.md +2 -2
  2. package/WAProto/WAProto.proto +75 -1256
  3. package/WAProto/fix-imports.js +79 -69
  4. package/WAProto/index.d.ts +71491 -15254
  5. package/WAProto/index.js +126432 -19810
  6. package/engine-requirements.js +4 -3
  7. package/lib/Defaults/index.js +187 -0
  8. package/lib/Signal/Group/ciphertext-message.js +15 -0
  9. package/lib/Signal/Group/group-session-builder.js +92 -0
  10. package/lib/Signal/Group/group_cipher.js +89 -0
  11. package/lib/Signal/Group/index.js +136 -0
  12. package/lib/Signal/Group/keyhelper.js +73 -0
  13. package/lib/Signal/Group/sender-chain-key.js +32 -0
  14. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  15. package/lib/Signal/Group/sender-key-message.js +69 -0
  16. package/lib/Signal/Group/sender-key-name.js +50 -0
  17. package/lib/Signal/Group/sender-key-record.js +44 -0
  18. package/lib/Signal/Group/sender-key-state.js +97 -0
  19. package/lib/Signal/Group/sender-message-key.js +30 -0
  20. package/lib/Signal/libsignal.js +459 -0
  21. package/lib/Signal/lid-mapping.js +260 -0
  22. package/lib/Socket/Client/index.js +30 -0
  23. package/lib/Socket/Client/types.js +13 -0
  24. package/lib/Socket/Client/websocket.js +62 -0
  25. package/lib/Socket/aigroups.js +240 -0
  26. package/lib/Socket/business.js +422 -0
  27. package/lib/Socket/chats.js +1816 -0
  28. package/lib/Socket/communities.js +549 -0
  29. package/lib/Socket/graphql.js +656 -0
  30. package/lib/Socket/groups.js +764 -0
  31. package/lib/Socket/index.js +39 -0
  32. package/lib/Socket/interactive-handler.js +522 -0
  33. package/lib/Socket/interop.js +549 -0
  34. package/{src → lib}/Socket/luxu.js +120 -82
  35. package/lib/Socket/managed-account.js +183 -0
  36. package/lib/Socket/messages-recv.js +2442 -0
  37. package/lib/Socket/messages-send.js +1853 -0
  38. package/lib/Socket/mex.js +60 -0
  39. package/lib/Socket/newsletter.js +818 -0
  40. package/lib/Socket/privacy.js +449 -0
  41. package/lib/Socket/registration.js +427 -0
  42. package/lib/Socket/socket.js +1092 -0
  43. package/lib/Socket/text-router.js +83 -0
  44. package/lib/Socket/username.js +243 -0
  45. package/lib/Store/index.js +36 -0
  46. package/{src → lib}/Store/keyed-db.js +11 -21
  47. package/lib/Store/make-cache-manager-store.js +90 -0
  48. package/lib/Store/make-in-memory-store.js +604 -0
  49. package/lib/Store/make-ordered-dictionary.js +81 -0
  50. package/lib/Store/object-repository.js +29 -0
  51. package/lib/Types/Auth.js +38 -0
  52. package/lib/Types/Bussines.js +2 -0
  53. package/lib/Types/Call.js +2 -0
  54. package/lib/Types/Chat.js +4 -0
  55. package/lib/Types/Contact.js +2 -0
  56. package/lib/Types/Events.js +2 -0
  57. package/lib/Types/GroupMetadata.js +2 -0
  58. package/lib/Types/Label.js +27 -0
  59. package/lib/Types/LabelAssociation.js +9 -0
  60. package/lib/Types/Message.js +95 -0
  61. package/lib/Types/Mex.js +112 -0
  62. package/lib/Types/Newsletter.js +121 -0
  63. package/lib/Types/Product.js +2 -0
  64. package/lib/Types/Signal.js +2 -0
  65. package/lib/Types/Socket.js +2 -0
  66. package/lib/Types/State.js +70 -0
  67. package/lib/Types/USync.js +2 -0
  68. package/lib/Types/index.js +55 -0
  69. package/lib/Utils/auth-utils.js +306 -0
  70. package/lib/Utils/browser-utils.js +114 -0
  71. package/lib/Utils/business.js +247 -0
  72. package/lib/Utils/chat-utils.js +1208 -0
  73. package/lib/Utils/command-loader.d.ts +31 -0
  74. package/lib/Utils/command-loader.js +100 -0
  75. package/lib/Utils/companion-reg-client-utils.js +42 -0
  76. package/lib/Utils/consumer-application.js +107 -0
  77. package/lib/Utils/crypto.js +155 -0
  78. package/lib/Utils/curve25519-js.js +275 -0
  79. package/lib/Utils/decode-wa-message.js +560 -0
  80. package/lib/Utils/event-buffer.js +607 -0
  81. package/lib/Utils/generics.js +563 -0
  82. package/lib/Utils/group-history.js +60 -0
  83. package/lib/Utils/history.js +244 -0
  84. package/lib/Utils/identity-change-handler.js +52 -0
  85. package/lib/Utils/index.js +57 -0
  86. package/lib/Utils/jid-display-normalization.js +218 -0
  87. package/lib/Utils/link-preview.js +143 -0
  88. package/lib/Utils/logger.js +9 -0
  89. package/lib/Utils/lt-hash.js +39 -0
  90. package/lib/Utils/make-mutex.js +36 -0
  91. package/lib/Utils/message-composer.js +479 -0
  92. package/lib/Utils/message-retry-manager.js +270 -0
  93. package/lib/Utils/messages-media.js +896 -0
  94. package/lib/Utils/messages.js +2904 -0
  95. package/lib/Utils/meta-ai-msmsg.js +262 -0
  96. package/lib/Utils/native-bridge.js +82 -0
  97. package/lib/Utils/noise-handler.js +196 -0
  98. package/lib/Utils/offline-node-processor.js +42 -0
  99. package/lib/Utils/pre-key-manager.js +107 -0
  100. package/lib/Utils/process-message.js +1048 -0
  101. package/lib/Utils/reporting-utils.js +262 -0
  102. package/lib/Utils/session-pool.d.ts +16 -0
  103. package/lib/Utils/session-pool.js +94 -0
  104. package/lib/Utils/signal.js +224 -0
  105. package/lib/Utils/stanza-ack.js +40 -0
  106. package/lib/Utils/sticker.d.ts +17 -0
  107. package/lib/Utils/sticker.js +145 -0
  108. package/lib/Utils/sync-action-utils.js +54 -0
  109. package/lib/Utils/tc-token-utils.js +161 -0
  110. package/lib/Utils/use-multi-file-auth-state.js +121 -0
  111. package/lib/Utils/validate-connection.js +219 -0
  112. package/lib/Utils/view-once-cache.d.ts +9 -0
  113. package/lib/Utils/view-once-cache.js +79 -0
  114. package/lib/Utils/voip-rekey.js +22 -0
  115. package/lib/WABinary/constants.js +1304 -0
  116. package/lib/WABinary/decode.js +343 -0
  117. package/{src → lib}/WABinary/encode.js +12 -9
  118. package/lib/WABinary/generic-utils.js +240 -0
  119. package/lib/WABinary/index.js +33 -0
  120. package/lib/WABinary/jid-utils.js +361 -0
  121. package/lib/WABinary/types.js +2 -0
  122. package/lib/WAM/BinaryInfo.js +13 -0
  123. package/lib/WAM/constants.js +39486 -0
  124. package/lib/WAM/encode.js +142 -0
  125. package/lib/WAM/index.js +31 -0
  126. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +55 -0
  127. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  128. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  129. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  130. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  131. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +59 -0
  132. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +31 -0
  133. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  134. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +29 -0
  135. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  136. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  137. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  138. package/lib/WAUSync/Protocols/index.js +39 -0
  139. package/lib/WAUSync/USyncQuery.js +133 -0
  140. package/lib/WAUSync/USyncUser.js +50 -0
  141. package/lib/WAUSync/index.js +31 -0
  142. package/lib/antiban.js +4637 -0
  143. package/{src → lib}/index.js +49 -51
  144. package/package.json +4 -4
  145. package/src/Defaults/index.js +0 -186
  146. package/src/Signal/Group/ciphertext-message.js +0 -15
  147. package/src/Signal/Group/group-session-builder.js +0 -86
  148. package/src/Signal/Group/group_cipher.js +0 -82
  149. package/src/Signal/Group/index.js +0 -140
  150. package/src/Signal/Group/keyhelper.js +0 -77
  151. package/src/Signal/Group/sender-chain-key.js +0 -29
  152. package/src/Signal/Group/sender-key-distribution-message.js +0 -66
  153. package/src/Signal/Group/sender-key-message.js +0 -69
  154. package/src/Signal/Group/sender-key-name.js +0 -51
  155. package/src/Signal/Group/sender-key-record.js +0 -44
  156. package/src/Signal/Group/sender-key-state.js +0 -87
  157. package/src/Signal/Group/sender-message-key.js +0 -29
  158. package/src/Signal/libsignal.js +0 -455
  159. package/src/Signal/lid-mapping.js +0 -273
  160. package/src/Socket/Client/index.js +0 -31
  161. package/src/Socket/Client/types.js +0 -13
  162. package/src/Socket/Client/websocket.js +0 -61
  163. package/src/Socket/aigroups.js +0 -221
  164. package/src/Socket/business.js +0 -411
  165. package/src/Socket/chats.js +0 -1449
  166. package/src/Socket/communities.js +0 -463
  167. package/src/Socket/graphql.js +0 -523
  168. package/src/Socket/groups.js +0 -516
  169. package/src/Socket/index.js +0 -31
  170. package/src/Socket/interactive-handler.js +0 -527
  171. package/src/Socket/interop.js +0 -339
  172. package/src/Socket/managed-account.js +0 -98
  173. package/src/Socket/messages-recv.js +0 -2685
  174. package/src/Socket/messages-send.js +0 -2047
  175. package/src/Socket/mex.js +0 -57
  176. package/src/Socket/newsletter.js +0 -455
  177. package/src/Socket/privacy.js +0 -125
  178. package/src/Socket/registration.js +0 -236
  179. package/src/Socket/socket.js +0 -983
  180. package/src/Socket/text-router.js +0 -65
  181. package/src/Socket/username.js +0 -130
  182. package/src/Store/index.js +0 -33
  183. package/src/Store/make-cache-manager-store.js +0 -84
  184. package/src/Store/make-in-memory-store.js +0 -551
  185. package/src/Store/make-ordered-dictionary.js +0 -81
  186. package/src/Store/object-repository.js +0 -26
  187. package/src/Types/Auth.js +0 -31
  188. package/src/Types/Bussines.js +0 -2
  189. package/src/Types/Call.js +0 -2
  190. package/src/Types/Chat.js +0 -4
  191. package/src/Types/Contact.js +0 -2
  192. package/src/Types/Events.js +0 -2
  193. package/src/Types/GroupMetadata.js +0 -2
  194. package/src/Types/Label.js +0 -26
  195. package/src/Types/LabelAssociation.js +0 -8
  196. package/src/Types/Message.js +0 -93
  197. package/src/Types/Mex.js +0 -112
  198. package/src/Types/Newsletter.js +0 -109
  199. package/src/Types/Product.js +0 -2
  200. package/src/Types/Signal.js +0 -2
  201. package/src/Types/Socket.js +0 -2
  202. package/src/Types/State.js +0 -62
  203. package/src/Types/USync.js +0 -2
  204. package/src/Types/index.js +0 -56
  205. package/src/Utils/auth-utils.js +0 -254
  206. package/src/Utils/browser-utils.js +0 -112
  207. package/src/Utils/business.js +0 -240
  208. package/src/Utils/chat-utils.js +0 -1230
  209. package/src/Utils/command-loader.d.ts +0 -27
  210. package/src/Utils/command-loader.js +0 -89
  211. package/src/Utils/companion-reg-client-utils.js +0 -40
  212. package/src/Utils/consumer-application.js +0 -105
  213. package/src/Utils/crypto.js +0 -118
  214. package/src/Utils/curve25519-js.js +0 -242
  215. package/src/Utils/decode-wa-message.js +0 -529
  216. package/src/Utils/event-buffer.js +0 -580
  217. package/src/Utils/generics.js +0 -483
  218. package/src/Utils/group-history.js +0 -44
  219. package/src/Utils/history.js +0 -232
  220. package/src/Utils/identity-change-handler.js +0 -52
  221. package/src/Utils/index.js +0 -58
  222. package/src/Utils/jid-display-normalization.js +0 -195
  223. package/src/Utils/link-preview.js +0 -135
  224. package/src/Utils/logger.js +0 -8
  225. package/src/Utils/lt-hash.js +0 -25
  226. package/src/Utils/make-mutex.js +0 -36
  227. package/src/Utils/message-composer.js +0 -471
  228. package/src/Utils/message-retry-manager.js +0 -217
  229. package/src/Utils/messages-media.js +0 -843
  230. package/src/Utils/messages.js +0 -2817
  231. package/src/Utils/meta-ai-msmsg.js +0 -222
  232. package/src/Utils/native-bridge.js +0 -68
  233. package/src/Utils/noise-handler.js +0 -169
  234. package/src/Utils/offline-node-processor.js +0 -34
  235. package/src/Utils/pre-key-manager.js +0 -90
  236. package/src/Utils/process-message.js +0 -950
  237. package/src/Utils/reporting-utils.js +0 -261
  238. package/src/Utils/session-pool.d.ts +0 -14
  239. package/src/Utils/session-pool.js +0 -70
  240. package/src/Utils/signal.js +0 -217
  241. package/src/Utils/stanza-ack.js +0 -30
  242. package/src/Utils/sticker.d.ts +0 -13
  243. package/src/Utils/sticker.js +0 -123
  244. package/src/Utils/sync-action-utils.js +0 -45
  245. package/src/Utils/tc-token-utils.js +0 -158
  246. package/src/Utils/use-multi-file-auth-state.js +0 -111
  247. package/src/Utils/validate-connection.js +0 -209
  248. package/src/Utils/view-once-cache.d.ts +0 -12
  249. package/src/Utils/view-once-cache.js +0 -63
  250. package/src/Utils/voip-rekey.js +0 -22
  251. package/src/WABinary/constants.js +0 -1304
  252. package/src/WABinary/decode.js +0 -342
  253. package/src/WABinary/generic-utils.js +0 -238
  254. package/src/WABinary/index.js +0 -34
  255. package/src/WABinary/jid-utils.js +0 -351
  256. package/src/WABinary/types.js +0 -2
  257. package/src/WAM/BinaryInfo.js +0 -13
  258. package/src/WAM/constants.js +0 -39484
  259. package/src/WAM/encode.js +0 -149
  260. package/src/WAM/index.js +0 -32
  261. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
  262. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
  263. package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
  264. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
  265. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
  266. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
  267. package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
  268. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
  269. package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
  270. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  271. package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  272. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  273. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  274. package/src/WAUSync/Protocols/index.js +0 -40
  275. package/src/WAUSync/USyncQuery.js +0 -126
  276. package/src/WAUSync/USyncUser.js +0 -50
  277. package/src/WAUSync/index.js +0 -32
  278. package/src/antiban.js +0 -4152
  279. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
@@ -1,217 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.MessageRetryManager = exports.RetryReason = void 0;
4
- const lru_cache_1 = require('lru-cache');
5
- const RECENT_MESSAGES_SIZE = 512;
6
- const MESSAGE_KEY_SEPARATOR = '\u0000';
7
- const RECREATE_SESSION_TIMEOUT = 60 * 60 * 1000;
8
- const PHONE_REQUEST_DELAY = 3000;
9
- var RetryReason;
10
- (function (RetryReason) {
11
- RetryReason[(RetryReason['UnknownError'] = 0)] = 'UnknownError';
12
- RetryReason[(RetryReason['SignalErrorNoSession'] = 1)] = 'SignalErrorNoSession';
13
- RetryReason[(RetryReason['SignalErrorInvalidKey'] = 2)] = 'SignalErrorInvalidKey';
14
- RetryReason[(RetryReason['SignalErrorInvalidKeyId'] = 3)] = 'SignalErrorInvalidKeyId';
15
- RetryReason[(RetryReason['SignalErrorInvalidMessage'] = 4)] = 'SignalErrorInvalidMessage';
16
- RetryReason[(RetryReason['SignalErrorInvalidSignature'] = 5)] = 'SignalErrorInvalidSignature';
17
- RetryReason[(RetryReason['SignalErrorFutureMessage'] = 6)] = 'SignalErrorFutureMessage';
18
- RetryReason[(RetryReason['SignalErrorBadMac'] = 7)] = 'SignalErrorBadMac';
19
- RetryReason[(RetryReason['SignalErrorInvalidSession'] = 8)] = 'SignalErrorInvalidSession';
20
- RetryReason[(RetryReason['SignalErrorInvalidMsgKey'] = 9)] = 'SignalErrorInvalidMsgKey';
21
- RetryReason[(RetryReason['BadBroadcastEphemeralSetting'] = 10)] = 'BadBroadcastEphemeralSetting';
22
- RetryReason[(RetryReason['UnknownCompanionNoPrekey'] = 11)] = 'UnknownCompanionNoPrekey';
23
- RetryReason[(RetryReason['AdvFailure'] = 12)] = 'AdvFailure';
24
- RetryReason[(RetryReason['StatusRevokeDelay'] = 13)] = 'StatusRevokeDelay';
25
- })(RetryReason || (exports.RetryReason = RetryReason = {}));
26
- const MAC_ERROR_CODES = new Set([RetryReason.SignalErrorInvalidMessage, RetryReason.SignalErrorBadMac]);
27
- class MessageRetryManager {
28
- constructor(logger, maxMsgRetryCount) {
29
- this.logger = logger;
30
- this.recentMessagesMap = new lru_cache_1.LRUCache({
31
- max: RECENT_MESSAGES_SIZE,
32
- ttl: 5 * 60 * 1000,
33
- ttlAutopurge: true,
34
- dispose: (_value, key) => {
35
- const separatorIndex = key.lastIndexOf(MESSAGE_KEY_SEPARATOR);
36
- if (separatorIndex > -1) {
37
- const messageId = key.slice(separatorIndex + MESSAGE_KEY_SEPARATOR.length);
38
- this.messageKeyIndex.delete(messageId);
39
- }
40
- }
41
- });
42
- this.messageKeyIndex = new Map();
43
- this.sessionRecreateHistory = new lru_cache_1.LRUCache({
44
- ttl: RECREATE_SESSION_TIMEOUT * 2,
45
- ttlAutopurge: true
46
- });
47
- this.retryCounters = new lru_cache_1.LRUCache({
48
- ttl: 15 * 60 * 1000,
49
- ttlAutopurge: true,
50
- updateAgeOnGet: true
51
- });
52
- this.baseKeys = new lru_cache_1.LRUCache({
53
- max: 1024,
54
- ttl: 15 * 60 * 1000,
55
- ttlAutopurge: true
56
- });
57
- this.pendingPhoneRequests = {};
58
- this.maxMsgRetryCount = 5;
59
- this.statistics = {
60
- totalRetries: 0,
61
- successfulRetries: 0,
62
- failedRetries: 0,
63
- mediaRetries: 0,
64
- sessionRecreations: 0,
65
- phoneRequests: 0
66
- };
67
- this.maxMsgRetryCount = maxMsgRetryCount;
68
- }
69
- addRecentMessage(to, id, message) {
70
- const key = { to, id };
71
- const keyStr = this.keyToString(key);
72
- this.recentMessagesMap.set(keyStr, {
73
- message,
74
- timestamp: Date.now()
75
- });
76
- this.messageKeyIndex.set(id, keyStr);
77
- this.logger.debug(`Added message to retry cache: ${to}/${id}`);
78
- }
79
- getRecentMessage(to, id) {
80
- const key = { to, id };
81
- const keyStr = this.keyToString(key);
82
- return this.recentMessagesMap.get(keyStr);
83
- }
84
- shouldRecreateSession(jid, hasSession, errorCode) {
85
- if (!hasSession) {
86
- this.sessionRecreateHistory.set(jid, Date.now());
87
- this.statistics.sessionRecreations++;
88
- return {
89
- reason: "we don't have a Signal session with them",
90
- recreate: true
91
- };
92
- }
93
- if (errorCode !== undefined && MAC_ERROR_CODES.has(errorCode)) {
94
- this.sessionRecreateHistory.set(jid, Date.now());
95
- this.statistics.sessionRecreations++;
96
- this.logger.warn({ jid, errorCode: RetryReason[errorCode] }, 'MAC error detected, forcing immediate session recreation');
97
- return {
98
- reason: `MAC error (code ${errorCode}: ${RetryReason[errorCode]}), immediate session recreation`,
99
- recreate: true
100
- };
101
- }
102
- const now = Date.now();
103
- const prevTime = this.sessionRecreateHistory.get(jid);
104
- if (!prevTime || now - prevTime > RECREATE_SESSION_TIMEOUT) {
105
- this.sessionRecreateHistory.set(jid, now);
106
- this.statistics.sessionRecreations++;
107
- return {
108
- reason: 'retry count > 1 and over an hour since last recreation',
109
- recreate: true
110
- };
111
- }
112
- return { reason: '', recreate: false };
113
- }
114
- parseRetryErrorCode(errorAttr) {
115
- if (errorAttr === undefined || errorAttr === '') {
116
- return undefined;
117
- }
118
- const code = parseInt(errorAttr, 10);
119
- if (Number.isNaN(code)) {
120
- return undefined;
121
- }
122
- if (code >= RetryReason.UnknownError && code <= RetryReason.StatusRevokeDelay) {
123
- return code;
124
- }
125
- return RetryReason.UnknownError;
126
- }
127
- isMacError(errorCode) {
128
- return errorCode !== undefined && MAC_ERROR_CODES.has(errorCode);
129
- }
130
- incrementRetryCount(messageId) {
131
- this.retryCounters.set(messageId, (this.retryCounters.get(messageId) || 0) + 1);
132
- this.statistics.totalRetries++;
133
- return this.retryCounters.get(messageId);
134
- }
135
- getRetryCount(messageId) {
136
- return this.retryCounters.get(messageId) || 0;
137
- }
138
- hasExceededMaxRetries(messageId) {
139
- return this.getRetryCount(messageId) >= this.maxMsgRetryCount;
140
- }
141
- markRetrySuccess(messageId) {
142
- this.statistics.successfulRetries++;
143
- this.retryCounters.delete(messageId);
144
- this.cancelPendingPhoneRequest(messageId);
145
- this.removeRecentMessage(messageId);
146
- }
147
- markRetryFailed(messageId) {
148
- this.statistics.failedRetries++;
149
- this.retryCounters.delete(messageId);
150
- this.cancelPendingPhoneRequest(messageId);
151
- this.removeRecentMessage(messageId);
152
- }
153
- schedulePhoneRequest(messageId, callback, delay = PHONE_REQUEST_DELAY) {
154
- this.cancelPendingPhoneRequest(messageId);
155
- this.pendingPhoneRequests[messageId] = setTimeout(() => {
156
- delete this.pendingPhoneRequests[messageId];
157
- this.statistics.phoneRequests++;
158
- callback();
159
- }, delay);
160
- this.logger.debug(`Scheduled phone request for message ${messageId} with ${delay}ms delay`);
161
- }
162
- cancelPendingPhoneRequest(messageId) {
163
- const timeout = this.pendingPhoneRequests[messageId];
164
- if (timeout) {
165
- clearTimeout(timeout);
166
- delete this.pendingPhoneRequests[messageId];
167
- this.logger.debug(`Cancelled pending phone request for message ${messageId}`);
168
- }
169
- }
170
- clear() {
171
- this.recentMessagesMap.clear();
172
- this.messageKeyIndex.clear();
173
- this.sessionRecreateHistory.clear();
174
- this.retryCounters.clear();
175
- this.baseKeys.clear();
176
- for (const messageId of Object.keys(this.pendingPhoneRequests)) {
177
- this.cancelPendingPhoneRequest(messageId);
178
- }
179
- this.statistics = {
180
- totalRetries: 0,
181
- successfulRetries: 0,
182
- failedRetries: 0,
183
- mediaRetries: 0,
184
- sessionRecreations: 0,
185
- phoneRequests: 0
186
- };
187
- }
188
- saveBaseKey(addr, msgId, baseKey) {
189
- this.baseKeys.set(`${addr}:${msgId}`, baseKey);
190
- }
191
- hasSameBaseKey(addr, msgId, baseKey) {
192
- const stored = this.baseKeys.get(`${addr}:${msgId}`);
193
- if (!stored || stored.length !== baseKey.length) {
194
- return false;
195
- }
196
- for (let i = 0; i < stored.length; i++) {
197
- if (stored[i] !== baseKey[i])
198
- return false;
199
- }
200
- return true;
201
- }
202
- deleteBaseKey(addr, msgId) {
203
- this.baseKeys.delete(`${addr}:${msgId}`);
204
- }
205
- keyToString(key) {
206
- return `${key.to}${MESSAGE_KEY_SEPARATOR}${key.id}`;
207
- }
208
- removeRecentMessage(messageId) {
209
- const keyStr = this.messageKeyIndex.get(messageId);
210
- if (!keyStr) {
211
- return;
212
- }
213
- this.recentMessagesMap.delete(keyStr);
214
- this.messageKeyIndex.delete(messageId);
215
- }
216
- }
217
- exports.MessageRetryManager = MessageRetryManager;