@badzz88/baileys 8.5.6 → 8.5.8

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 (225) hide show
  1. package/README.md +337 -1055
  2. package/WAProto/WAProto.proto +28 -1189
  3. package/WAProto/fix-imports.js +79 -69
  4. package/WAProto/index.d.ts +71491 -15254
  5. package/WAProto/index.js +126436 -19814
  6. package/engine-requirements.js +8 -15
  7. package/lib/Defaults/index.js +130 -0
  8. package/{src → lib}/Signal/Group/ciphertext-message.js +2 -5
  9. package/lib/Signal/Group/group-session-builder.js +30 -0
  10. package/{src → lib}/Signal/Group/group_cipher.js +11 -11
  11. package/lib/Signal/Group/index.js +12 -0
  12. package/lib/Signal/Group/keyhelper.js +18 -0
  13. package/{src → lib}/Signal/Group/sender-chain-key.js +6 -9
  14. package/{src → lib}/Signal/Group/sender-key-distribution-message.js +6 -9
  15. package/{src → lib}/Signal/Group/sender-key-message.js +9 -12
  16. package/{src → lib}/Signal/Group/sender-key-name.js +2 -5
  17. package/{src → lib}/Signal/Group/sender-key-record.js +8 -11
  18. package/{src → lib}/Signal/Group/sender-key-state.js +6 -9
  19. package/lib/Signal/Group/sender-message-key.js +26 -0
  20. package/{src → lib}/Signal/libsignal.js +131 -155
  21. package/{src → lib}/Signal/lid-mapping.js +27 -23
  22. package/lib/Socket/Client/index.js +3 -0
  23. package/lib/Socket/Client/types.js +11 -0
  24. package/{src → lib}/Socket/Client/websocket.js +11 -18
  25. package/{src → lib}/Socket/business.js +35 -67
  26. package/{src → lib}/Socket/chats.js +294 -550
  27. package/{src → lib}/Socket/communities.js +82 -114
  28. package/lib/Socket/graphql.js +716 -0
  29. package/lib/Socket/groups.js +374 -0
  30. package/lib/Socket/index.js +18 -0
  31. package/lib/Socket/interop.js +463 -0
  32. package/{src → lib}/Socket/luxu.js +120 -82
  33. package/lib/Socket/messages-recv.js +1916 -0
  34. package/lib/Socket/messages-send.js +1436 -0
  35. package/lib/Socket/mex.js +54 -0
  36. package/lib/Socket/newsletter.js +757 -0
  37. package/lib/Socket/privacy.js +318 -0
  38. package/{src → lib}/Socket/socket.js +356 -244
  39. package/lib/Socket/username.js +236 -0
  40. package/lib/Store/index.js +10 -0
  41. package/{src → lib}/Store/keyed-db.js +11 -21
  42. package/lib/Store/make-cache-manager-store.js +85 -0
  43. package/lib/Store/make-in-memory-store.js +244 -0
  44. package/{src → lib}/Store/make-ordered-dictionary.js +19 -25
  45. package/{src → lib}/Store/object-repository.js +11 -5
  46. package/lib/Types/Auth.js +2 -0
  47. package/lib/Types/Bussines.js +2 -0
  48. package/lib/Types/Call.js +2 -0
  49. package/lib/Types/Chat.js +8 -0
  50. package/lib/Types/Contact.js +2 -0
  51. package/lib/Types/Events.js +2 -0
  52. package/lib/Types/GroupMetadata.js +2 -0
  53. package/lib/Types/Label.js +25 -0
  54. package/lib/Types/LabelAssociation.js +7 -0
  55. package/lib/Types/Message.js +11 -0
  56. package/lib/Types/Mex.js +111 -0
  57. package/lib/Types/Product.js +2 -0
  58. package/lib/Types/Signal.js +2 -0
  59. package/lib/Types/Socket.js +3 -0
  60. package/lib/Types/State.js +56 -0
  61. package/lib/Types/USync.js +2 -0
  62. package/lib/Types/index.js +26 -0
  63. package/{src → lib}/Utils/auth-utils.js +91 -43
  64. package/lib/Utils/browser-utils.js +48 -0
  65. package/lib/Utils/business.js +231 -0
  66. package/lib/Utils/chat-utils.js +872 -0
  67. package/lib/Utils/companion-reg-client-utils.js +35 -0
  68. package/lib/Utils/crypto.js +118 -0
  69. package/lib/Utils/decode-wa-message.js +350 -0
  70. package/{src → lib}/Utils/event-buffer.js +81 -39
  71. package/lib/Utils/generics.js +403 -0
  72. package/lib/Utils/history.js +134 -0
  73. package/{src → lib}/Utils/identity-change-handler.js +9 -11
  74. package/lib/Utils/index.js +23 -0
  75. package/lib/Utils/link-preview.js +85 -0
  76. package/lib/Utils/logger.js +3 -0
  77. package/lib/Utils/lt-hash.js +8 -0
  78. package/{src → lib}/Utils/make-mutex.js +7 -10
  79. package/lib/Utils/message-composer.js +273 -0
  80. package/{src → lib}/Utils/message-retry-manager.js +76 -28
  81. package/lib/Utils/messages-media.js +870 -0
  82. package/lib/Utils/messages.js +1337 -0
  83. package/lib/Utils/noise-handler.js +201 -0
  84. package/{src → lib}/Utils/offline-node-processor.js +10 -4
  85. package/{src → lib}/Utils/pre-key-manager.js +27 -11
  86. package/lib/Utils/process-message.js +630 -0
  87. package/{src → lib}/Utils/reporting-utils.js +12 -15
  88. package/lib/Utils/signal.js +201 -0
  89. package/{src → lib}/Utils/stanza-ack.js +12 -4
  90. package/lib/Utils/sticker.js +110 -0
  91. package/{src → lib}/Utils/sync-action-utils.js +14 -10
  92. package/{src → lib}/Utils/tc-token-utils.js +48 -43
  93. package/{src → lib}/Utils/use-multi-file-auth-state.js +35 -25
  94. package/lib/Utils/validate-connection.js +203 -0
  95. package/{src → lib}/WABinary/constants.js +9 -12
  96. package/{src → lib}/WABinary/decode.js +38 -118
  97. package/{src → lib}/WABinary/encode.js +6 -11
  98. package/lib/WABinary/generic-utils.js +204 -0
  99. package/lib/WABinary/index.js +6 -0
  100. package/lib/WABinary/jid-utils.js +98 -0
  101. package/lib/WABinary/types.js +2 -0
  102. package/{src → lib}/WAM/BinaryInfo.js +2 -5
  103. package/{src → lib}/WAM/constants.js +4 -16635
  104. package/{src → lib}/WAM/encode.js +18 -17
  105. package/lib/WAM/index.js +4 -0
  106. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  107. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  108. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  109. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  110. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  111. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
  112. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  113. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  114. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
  115. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  116. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  117. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  118. package/lib/WAUSync/Protocols/index.js +12 -0
  119. package/lib/WAUSync/USyncQuery.js +151 -0
  120. package/lib/WAUSync/USyncUser.js +56 -0
  121. package/lib/WAUSync/index.js +3 -0
  122. package/{src → lib}/index.js +16 -51
  123. package/package.json +129 -99
  124. package/LICENSE +0 -21
  125. package/src/Defaults/index.js +0 -186
  126. package/src/Defaults/phonenumber-mcc.json +0 -223
  127. package/src/Signal/Group/group-session-builder.js +0 -86
  128. package/src/Signal/Group/index.js +0 -140
  129. package/src/Signal/Group/keyhelper.js +0 -77
  130. package/src/Signal/Group/sender-message-key.js +0 -29
  131. package/src/Socket/Client/index.js +0 -31
  132. package/src/Socket/Client/types.js +0 -13
  133. package/src/Socket/aigroups.js +0 -221
  134. package/src/Socket/graphql.js +0 -523
  135. package/src/Socket/groups.js +0 -516
  136. package/src/Socket/index.js +0 -31
  137. package/src/Socket/interactive-handler.js +0 -527
  138. package/src/Socket/interop.js +0 -339
  139. package/src/Socket/managed-account.js +0 -98
  140. package/src/Socket/messages-recv.js +0 -2685
  141. package/src/Socket/messages-send.js +0 -2047
  142. package/src/Socket/mex.js +0 -57
  143. package/src/Socket/newsletter.js +0 -455
  144. package/src/Socket/privacy.js +0 -125
  145. package/src/Socket/registration.js +0 -236
  146. package/src/Socket/text-router.js +0 -65
  147. package/src/Socket/username.js +0 -130
  148. package/src/Store/index.js +0 -33
  149. package/src/Store/make-cache-manager-store.js +0 -84
  150. package/src/Store/make-in-memory-store.js +0 -551
  151. package/src/Types/Auth.js +0 -31
  152. package/src/Types/Bussines.js +0 -2
  153. package/src/Types/Call.js +0 -2
  154. package/src/Types/Chat.js +0 -4
  155. package/src/Types/Contact.js +0 -2
  156. package/src/Types/Events.js +0 -2
  157. package/src/Types/GroupMetadata.js +0 -2
  158. package/src/Types/Label.js +0 -26
  159. package/src/Types/LabelAssociation.js +0 -8
  160. package/src/Types/Message.js +0 -93
  161. package/src/Types/Mex.js +0 -112
  162. package/src/Types/Newsletter.js +0 -109
  163. package/src/Types/Product.js +0 -2
  164. package/src/Types/Signal.js +0 -2
  165. package/src/Types/Socket.js +0 -2
  166. package/src/Types/State.js +0 -62
  167. package/src/Types/USync.js +0 -2
  168. package/src/Types/index.js +0 -56
  169. package/src/Utils/browser-utils.js +0 -112
  170. package/src/Utils/business.js +0 -240
  171. package/src/Utils/chat-utils.js +0 -1230
  172. package/src/Utils/command-loader.d.ts +0 -27
  173. package/src/Utils/command-loader.js +0 -89
  174. package/src/Utils/companion-reg-client-utils.js +0 -40
  175. package/src/Utils/consumer-application.js +0 -105
  176. package/src/Utils/crypto.js +0 -118
  177. package/src/Utils/curve25519-js.js +0 -242
  178. package/src/Utils/decode-wa-message.js +0 -529
  179. package/src/Utils/generics.js +0 -483
  180. package/src/Utils/group-history.js +0 -44
  181. package/src/Utils/history.js +0 -232
  182. package/src/Utils/index.js +0 -58
  183. package/src/Utils/jid-display-normalization.js +0 -195
  184. package/src/Utils/link-preview.js +0 -135
  185. package/src/Utils/logger.js +0 -8
  186. package/src/Utils/lt-hash.js +0 -25
  187. package/src/Utils/message-composer.js +0 -471
  188. package/src/Utils/messages-media.js +0 -843
  189. package/src/Utils/messages.js +0 -2817
  190. package/src/Utils/meta-ai-msmsg.js +0 -222
  191. package/src/Utils/native-bridge.js +0 -68
  192. package/src/Utils/noise-handler.js +0 -169
  193. package/src/Utils/process-message.js +0 -950
  194. package/src/Utils/session-pool.d.ts +0 -14
  195. package/src/Utils/session-pool.js +0 -70
  196. package/src/Utils/signal.js +0 -217
  197. package/src/Utils/sticker.d.ts +0 -13
  198. package/src/Utils/sticker.js +0 -123
  199. package/src/Utils/validate-connection.js +0 -209
  200. package/src/Utils/view-once-cache.d.ts +0 -12
  201. package/src/Utils/view-once-cache.js +0 -63
  202. package/src/Utils/voip-rekey.js +0 -22
  203. package/src/WABinary/generic-utils.js +0 -238
  204. package/src/WABinary/index.js +0 -34
  205. package/src/WABinary/jid-utils.js +0 -351
  206. package/src/WABinary/types.js +0 -2
  207. package/src/WAM/index.js +0 -32
  208. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
  209. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
  210. package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
  211. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
  212. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
  213. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
  214. package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
  215. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
  216. package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
  217. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  218. package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  219. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  220. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  221. package/src/WAUSync/Protocols/index.js +0 -40
  222. package/src/WAUSync/USyncQuery.js +0 -126
  223. package/src/WAUSync/USyncUser.js +0 -50
  224. package/src/WAUSync/index.js +0 -32
  225. package/src/antiban.js +0 -4152
@@ -1,27 +1,12 @@
1
- 'use strict';
2
- var __importDefault = (this && this.__importDefault) ||
3
- function (mod) {
4
- return mod && mod.__esModule ? mod : { default: mod };
5
- };
6
- Object.defineProperty(exports, '__esModule', { value: true });
7
- exports.extractCommunityMetadata = exports.makeCommunitiesSocket = void 0;
8
- const index_js_1 = require('../../WAProto/index.js');
9
- const Types_1 = require('../Types');
10
- const Utils_1 = require('../Utils');
11
- const logger_1 = __importDefault(require('../Utils/logger'));
12
- const WABinary_1 = require('../WABinary');
13
- const business_1 = require('./business');
14
- const mex_1 = require('./mex');
15
- const COMMUNITY_MEX_QUERY_IDS = {
16
- QUERY_PARTICIPANT_COUNT: '31981537024824320',
17
- QUERY_SUBGROUPS: '25554052094203120',
18
- QUERY_SUBGROUP_PARTICIPANT_COUNT: '24784259781196780',
19
- UPDATE_OWNER: '24781435194845316'
20
- };
21
- const makeCommunitiesSocket = config => {
22
- const sock = (0, business_1.makeBusinessSocket)(config);
23
- const { authState, ev, query, generateMessageTag, upsertMessage } = sock;
24
- const mexQuery = (variables, queryId, dataPath) => (0, mex_1.executeWMexQuery)(variables, queryId, dataPath, query, generateMessageTag);
1
+ import { proto } from '../../WAProto/index.js';
2
+ import { WAMessageStubType } from '../Types/index.js';
3
+ import { generateMessageID, generateMessageIDV2, unixTimestampSeconds } from '../Utils/index.js';
4
+ import logger from '../Utils/logger.js';
5
+ import { getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary/index.js';
6
+ import { makeBusinessSocket } from './business.js';
7
+ export const makeCommunitiesSocket = (config) => {
8
+ const sock = makeBusinessSocket(config);
9
+ const { authState, ev, query, upsertMessage } = sock;
25
10
  const communityQuery = async (jid, type, content) => query({
26
11
  tag: 'iq',
27
12
  attrs: {
@@ -33,7 +18,7 @@ const makeCommunitiesSocket = config => {
33
18
  });
34
19
  const communityMetadata = async (jid) => {
35
20
  const result = await communityQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }]);
36
- return (0, exports.extractCommunityMetadata)(result);
21
+ return extractCommunityMetadata(result);
37
22
  };
38
23
  const communityFetchAllParticipating = async () => {
39
24
  const result = await query({
@@ -55,11 +40,11 @@ const makeCommunitiesSocket = config => {
55
40
  ]
56
41
  });
57
42
  const data = {};
58
- const communitiesChild = (0, WABinary_1.getBinaryNodeChild)(result, 'communities');
43
+ const communitiesChild = getBinaryNodeChild(result, 'communities');
59
44
  if (communitiesChild) {
60
- const communities = (0, WABinary_1.getBinaryNodeChildren)(communitiesChild, 'community');
45
+ const communities = getBinaryNodeChildren(communitiesChild, 'community');
61
46
  for (const communityNode of communities) {
62
- const meta = (0, exports.extractCommunityMetadata)({
47
+ const meta = extractCommunityMetadata({
63
48
  tag: 'result',
64
49
  attrs: {},
65
50
  content: [communityNode]
@@ -71,15 +56,16 @@ const makeCommunitiesSocket = config => {
71
56
  return data;
72
57
  };
73
58
  async function parseGroupResult(node) {
74
- logger_1.default.info({ node }, 'parseGroupResult');
75
- const groupNode = (0, WABinary_1.getBinaryNodeChild)(node, 'group');
59
+ logger.info({ node }, 'parseGroupResult');
60
+ const groupNode = getBinaryNodeChild(node, 'group');
76
61
  if (groupNode) {
77
62
  try {
63
+ logger.info({ groupNode }, 'groupNode');
78
64
  const metadata = await sock.groupMetadata(`${groupNode.attrs.id}@g.us`);
79
65
  return metadata ? metadata : Optional.empty();
80
66
  }
81
67
  catch (error) {
82
- logger_1.default.error({ error }, 'Error fetching community group metadata');
68
+ console.error('Error parsing group metadata:', error);
83
69
  return Optional.empty();
84
70
  }
85
71
  }
@@ -87,10 +73,10 @@ const makeCommunitiesSocket = config => {
87
73
  }
88
74
  const Optional = {
89
75
  empty: () => null,
90
- of: value => (value !== null ? { value } : null)
76
+ of: (value) => (value !== null ? { value } : null)
91
77
  };
92
78
  sock.ws.on('CB:ib,,dirty', async (node) => {
93
- const { attrs } = (0, WABinary_1.getBinaryNodeChild)(node, 'dirty');
79
+ const { attrs } = getBinaryNodeChild(node, 'dirty');
94
80
  if (attrs.type !== 'communities') {
95
81
  return;
96
82
  }
@@ -101,7 +87,7 @@ const makeCommunitiesSocket = config => {
101
87
  ...sock,
102
88
  communityMetadata,
103
89
  communityCreate: async (subject, body) => {
104
- const descriptionId = (0, Utils_1.generateMessageID)().substring(0, 12);
90
+ const descriptionId = generateMessageID().substring(0, 12);
105
91
  const result = await communityQuery('@g.us', 'set', [
106
92
  {
107
93
  tag: 'create',
@@ -136,7 +122,7 @@ const makeCommunitiesSocket = config => {
136
122
  return await parseGroupResult(result);
137
123
  },
138
124
  communityCreateGroup: async (subject, participants, parentCommunityJid) => {
139
- const key = (0, Utils_1.generateMessageIDV2)();
125
+ const key = generateMessageIDV2();
140
126
  const result = await communityQuery('@g.us', 'set', [
141
127
  {
142
128
  tag: 'create',
@@ -200,24 +186,28 @@ const makeCommunitiesSocket = config => {
200
186
  communityFetchLinkedGroups: async (jid) => {
201
187
  let communityJid = jid;
202
188
  let isCommunity = false;
189
+ // Try to determine if it is a subgroup or a community
203
190
  const metadata = await sock.groupMetadata(jid);
204
191
  if (metadata.linkedParent) {
192
+ // It is a subgroup, get the community jid
205
193
  communityJid = metadata.linkedParent;
206
194
  }
207
195
  else {
196
+ // It is a community
208
197
  isCommunity = true;
209
198
  }
199
+ // Fetch all subgroups of the community
210
200
  const result = await communityQuery(communityJid, 'get', [{ tag: 'sub_groups', attrs: {} }]);
211
201
  const linkedGroupsData = [];
212
- const subGroupsNode = (0, WABinary_1.getBinaryNodeChild)(result, 'sub_groups');
202
+ const subGroupsNode = getBinaryNodeChild(result, 'sub_groups');
213
203
  if (subGroupsNode) {
214
- const groupNodes = (0, WABinary_1.getBinaryNodeChildren)(subGroupsNode, 'group');
204
+ const groupNodes = getBinaryNodeChildren(subGroupsNode, 'group');
215
205
  for (const groupNode of groupNodes) {
216
206
  linkedGroupsData.push({
217
- id: groupNode.attrs.id ? (0, WABinary_1.jidEncode)(groupNode.attrs.id, 'g.us') : undefined,
207
+ id: groupNode.attrs.id ? jidEncode(groupNode.attrs.id, 'g.us') : undefined,
218
208
  subject: groupNode.attrs.subject || '',
219
209
  creation: groupNode.attrs.creation ? Number(groupNode.attrs.creation) : undefined,
220
- owner: groupNode.attrs.creator ? (0, WABinary_1.jidNormalizedUser)(groupNode.attrs.creator) : undefined,
210
+ owner: groupNode.attrs.creator ? jidNormalizedUser(groupNode.attrs.creator) : undefined,
221
211
  size: groupNode.attrs.size ? Number(groupNode.attrs.size) : undefined
222
212
  });
223
213
  }
@@ -235,8 +225,8 @@ const makeCommunitiesSocket = config => {
235
225
  attrs: {}
236
226
  }
237
227
  ]);
238
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_approval_requests');
239
- const participants = (0, WABinary_1.getBinaryNodeChildren)(node, 'membership_approval_request');
228
+ const node = getBinaryNodeChild(result, 'membership_approval_requests');
229
+ const participants = getBinaryNodeChildren(node, 'membership_approval_request');
240
230
  return participants.map(v => v.attrs);
241
231
  },
242
232
  communityRequestParticipantsUpdate: async (jid, participants, action) => {
@@ -256,9 +246,9 @@ const makeCommunitiesSocket = config => {
256
246
  ]
257
247
  }
258
248
  ]);
259
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_requests_action');
260
- const nodeAction = (0, WABinary_1.getBinaryNodeChild)(node, action);
261
- const participantsAffected = (0, WABinary_1.getBinaryNodeChildren)(nodeAction, 'participant');
249
+ const node = getBinaryNodeChild(result, 'membership_requests_action');
250
+ const nodeAction = getBinaryNodeChild(node, action);
251
+ const participantsAffected = getBinaryNodeChildren(nodeAction, 'participant');
262
252
  return participantsAffected.map(p => {
263
253
  return { status: p.attrs.error || '200', jid: p.attrs.jid };
264
254
  });
@@ -274,8 +264,8 @@ const makeCommunitiesSocket = config => {
274
264
  }))
275
265
  }
276
266
  ]);
277
- const node = (0, WABinary_1.getBinaryNodeChild)(result, action);
278
- const participantsAffected = (0, WABinary_1.getBinaryNodeChildren)(node, 'participant');
267
+ const node = getBinaryNodeChild(result, action);
268
+ const participantsAffected = getBinaryNodeChildren(node, 'participant');
279
269
  return participantsAffected.map(p => {
280
270
  return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p };
281
271
  });
@@ -287,7 +277,7 @@ const makeCommunitiesSocket = config => {
287
277
  {
288
278
  tag: 'description',
289
279
  attrs: {
290
- ...(description ? { id: (0, Utils_1.generateMessageID)() } : { delete: 'true' }),
280
+ ...(description ? { id: generateMessageID() } : { delete: 'true' }),
291
281
  ...(prev ? { prev } : {})
292
282
  },
293
283
  content: description ? [{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }] : undefined
@@ -296,25 +286,36 @@ const makeCommunitiesSocket = config => {
296
286
  },
297
287
  communityInviteCode: async (jid) => {
298
288
  const result = await communityQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);
299
- const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite');
289
+ const inviteNode = getBinaryNodeChild(result, 'invite');
300
290
  return inviteNode?.attrs.code;
301
291
  },
302
292
  communityRevokeInvite: async (jid) => {
303
293
  const result = await communityQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);
304
- const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite');
294
+ const inviteNode = getBinaryNodeChild(result, 'invite');
305
295
  return inviteNode?.attrs.code;
306
296
  },
307
297
  communityAcceptInvite: async (code) => {
308
298
  const results = await communityQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);
309
- const result = (0, WABinary_1.getBinaryNodeChild)(results, 'community');
299
+ const result = getBinaryNodeChild(results, 'community');
310
300
  return result?.attrs.jid;
311
301
  },
302
+ /**
303
+ * revoke a v4 invite for someone
304
+ * @param communityJid community jid
305
+ * @param invitedJid jid of person you invited
306
+ * @returns true if successful
307
+ */
312
308
  communityRevokeInviteV4: async (communityJid, invitedJid) => {
313
309
  const result = await communityQuery(communityJid, 'set', [
314
310
  { tag: 'revoke', attrs: {}, content: [{ tag: 'participant', attrs: { jid: invitedJid } }] }
315
311
  ]);
316
312
  return !!result;
317
313
  },
314
+ /**
315
+ * accept a CommunityInviteMessage
316
+ * @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
317
+ * @param inviteMessage the message to accept
318
+ */
318
319
  communityAcceptInviteV4: ev.createBufferedFunction(async (key, inviteMessage) => {
319
320
  key = typeof key === 'string' ? { remoteJid: key } : key;
320
321
  const results = await communityQuery(inviteMessage.groupJid, 'set', [
@@ -327,8 +328,11 @@ const makeCommunitiesSocket = config => {
327
328
  }
328
329
  }
329
330
  ]);
331
+ // if we have the full message key
332
+ // update the invite message to be expired
330
333
  if (key.id) {
331
- inviteMessage = index_js_1.proto.Message.GroupInviteMessage.fromObject(inviteMessage);
334
+ // create new invite message that is expired
335
+ inviteMessage = proto.Message.GroupInviteMessage.fromObject(inviteMessage);
332
336
  inviteMessage.inviteExpiration = 0;
333
337
  inviteMessage.inviteCode = '';
334
338
  ev.emit('messages.update', [
@@ -342,23 +346,24 @@ const makeCommunitiesSocket = config => {
342
346
  }
343
347
  ]);
344
348
  }
349
+ // generate the community add message
345
350
  await upsertMessage({
346
351
  key: {
347
352
  remoteJid: inviteMessage.groupJid,
348
- id: (0, Utils_1.generateMessageIDV2)(sock.user?.id),
353
+ id: generateMessageIDV2(sock.user?.id),
349
354
  fromMe: false,
350
- participant: key.remoteJid
355
+ participant: key.remoteJid // TODO: investigate if this makes any sense at all
351
356
  },
352
- messageStubType: Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD,
357
+ messageStubType: WAMessageStubType.GROUP_PARTICIPANT_ADD,
353
358
  messageStubParameters: [JSON.stringify(authState.creds.me)],
354
359
  participant: key.remoteJid,
355
- messageTimestamp: (0, Utils_1.unixTimestampSeconds)()
360
+ messageTimestamp: unixTimestampSeconds()
356
361
  }, 'notify');
357
362
  return results.attrs.from;
358
363
  }),
359
364
  communityGetInviteInfo: async (code) => {
360
365
  const results = await communityQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
361
- return (0, exports.extractCommunityMetadata)(results);
366
+ return extractCommunityMetadata(results);
362
367
  },
363
368
  communityToggleEphemeral: async (jid, ephemeralExpiration) => {
364
369
  const content = ephemeralExpiration
@@ -377,87 +382,50 @@ const makeCommunitiesSocket = config => {
377
382
  { tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'community_join', attrs: { state: mode } }] }
378
383
  ]);
379
384
  },
380
- communityUpdatePicture: async (jid, content) => {
381
- const { img } = await (0, Utils_1.generateProfilePicture)(content);
382
- await communityQuery(jid, 'set', [
383
- {
384
- tag: 'picture',
385
- attrs: { type: 'image' },
386
- content: img
387
- }
388
- ]);
389
- },
390
- communityRemovePicture: async (jid) => {
391
- await communityQuery(jid, 'set', [{ tag: 'picture', attrs: { type: 'delete' } }]);
392
- },
393
- communitySettingUpdate: async (jid, setting) => {
394
- await communityQuery(jid, 'set', [{ tag: setting, attrs: {} }]);
395
- },
396
- communityDeactivate: async (jid) => {
397
- await communityQuery(jid, 'set', [{ tag: 'delete_parent', attrs: {} }]);
398
- },
399
- communityGetInviteInfo: async (code) => {
400
- const results = await communityQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
401
- return (0, exports.extractCommunityMetadata)(results);
402
- },
403
- communityToggleEphemeral: async (jid, ephemeralExpiration) => {
404
- const content = ephemeralExpiration
405
- ? { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } }
406
- : { tag: 'not_ephemeral', attrs: {} };
407
- await communityQuery(jid, 'set', [content]);
408
- },
409
- communityFetchAllParticipating,
410
- communityParticipantCount: jid => mexQuery({ group_input: { group_id: jid } }, COMMUNITY_MEX_QUERY_IDS.QUERY_PARTICIPANT_COUNT, 'xwa2_group_query_by_id'),
411
- communitySubgroupsMex: jid => mexQuery({ group_input: { group_id: jid } }, COMMUNITY_MEX_QUERY_IDS.QUERY_SUBGROUPS, 'xwa2_group_query_by_id'),
412
- communitySubgroupParticipantCount: subgroupJid => mexQuery({ group_input: { group_id: subgroupJid } }, COMMUNITY_MEX_QUERY_IDS.QUERY_SUBGROUP_PARTICIPANT_COUNT, 'xwa2_group_query_by_id'),
413
- communityTransferOwnershipMex: (communityJid, newOwnerJid) => mexQuery({
414
- group_id: communityJid,
415
- role_updates: [{ user_jid: newOwnerJid, new_role: 'SUPERADMIN_MEMBER' }]
416
- }, COMMUNITY_MEX_QUERY_IDS.UPDATE_OWNER, 'xwa2_community_update_owner'),
417
- COMMUNITY_MEX_QUERY_IDS
385
+ communityFetchAllParticipating
418
386
  };
419
387
  };
420
- exports.makeCommunitiesSocket = makeCommunitiesSocket;
421
- const extractCommunityMetadata = result => {
422
- const community = (0, WABinary_1.getBinaryNodeChild)(result, 'community');
423
- const descChild = (0, WABinary_1.getBinaryNodeChild)(community, 'description');
388
+ export const extractCommunityMetadata = (result) => {
389
+ const community = getBinaryNodeChild(result, 'community');
390
+ const descChild = getBinaryNodeChild(community, 'description');
424
391
  let desc;
425
392
  let descId;
426
393
  if (descChild) {
427
- desc = (0, WABinary_1.getBinaryNodeChildString)(descChild, 'body');
394
+ desc = getBinaryNodeChildString(descChild, 'body');
428
395
  descId = descChild.attrs.id;
429
396
  }
430
397
  const communityId = community.attrs.id?.includes('@')
431
398
  ? community.attrs.id
432
- : (0, WABinary_1.jidEncode)(community.attrs.id || '', 'g.us');
433
- const eph = (0, WABinary_1.getBinaryNodeChild)(community, 'ephemeral')?.attrs.expiration;
434
- const memberAddMode = (0, WABinary_1.getBinaryNodeChildString)(community, 'member_add_mode') === 'all_member_add';
399
+ : jidEncode(community.attrs.id || '', 'g.us');
400
+ const eph = getBinaryNodeChild(community, 'ephemeral')?.attrs.expiration;
401
+ const memberAddMode = getBinaryNodeChildString(community, 'member_add_mode') === 'all_member_add';
435
402
  const metadata = {
436
403
  id: communityId,
437
404
  subject: community.attrs.subject || '',
438
405
  subjectOwner: community.attrs.s_o,
439
406
  subjectTime: Number(community.attrs.s_t || 0),
440
- size: (0, WABinary_1.getBinaryNodeChildren)(community, 'participant').length,
407
+ size: getBinaryNodeChildren(community, 'participant').length,
441
408
  creation: Number(community.attrs.creation || 0),
442
- owner: community.attrs.creator ? (0, WABinary_1.jidNormalizedUser)(community.attrs.creator) : undefined,
409
+ owner: community.attrs.creator ? jidNormalizedUser(community.attrs.creator) : undefined,
443
410
  desc,
444
411
  descId,
445
- linkedParent: (0, WABinary_1.getBinaryNodeChild)(community, 'linked_parent')?.attrs.jid || undefined,
446
- restrict: !!(0, WABinary_1.getBinaryNodeChild)(community, 'locked'),
447
- announce: !!(0, WABinary_1.getBinaryNodeChild)(community, 'announcement'),
448
- isCommunity: !!(0, WABinary_1.getBinaryNodeChild)(community, 'parent'),
449
- isCommunityAnnounce: !!(0, WABinary_1.getBinaryNodeChild)(community, 'default_sub_community'),
450
- joinApprovalMode: !!(0, WABinary_1.getBinaryNodeChild)(community, 'membership_approval_mode'),
412
+ linkedParent: getBinaryNodeChild(community, 'linked_parent')?.attrs.jid || undefined,
413
+ restrict: !!getBinaryNodeChild(community, 'locked'),
414
+ announce: !!getBinaryNodeChild(community, 'announcement'),
415
+ isCommunity: !!getBinaryNodeChild(community, 'parent'),
416
+ isCommunityAnnounce: !!getBinaryNodeChild(community, 'default_sub_community'),
417
+ joinApprovalMode: !!getBinaryNodeChild(community, 'membership_approval_mode'),
451
418
  memberAddMode,
452
- participants: (0, WABinary_1.getBinaryNodeChildren)(community, 'participant').map(({ attrs }) => {
419
+ participants: getBinaryNodeChildren(community, 'participant').map(({ attrs }) => {
453
420
  return {
421
+ // TODO: IMPLEMENT THE PN/LID FIELDS HERE!!
454
422
  id: attrs.jid,
455
- admin: attrs.type || null
423
+ admin: (attrs.type || null)
456
424
  };
457
425
  }),
458
426
  ephemeralDuration: eph ? +eph : undefined,
459
- addressingMode: (0, WABinary_1.getBinaryNodeChildString)(community, 'addressing_mode')
427
+ addressingMode: getBinaryNodeChildString(community, 'addressing_mode')
460
428
  };
461
429
  return metadata;
462
430
  };
463
- exports.extractCommunityMetadata = extractCommunityMetadata;
431
+ //# sourceMappingURL=communities.js.map