@baileys-md/baileys 10.1.0 → 11.0.0

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 (122) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1303 -2
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +4633 -0
  5. package/WAProto/fix-imports.js +29 -0
  6. package/WAProto/index.js +13516 -4182
  7. package/lib/Defaults/baileys-version.js +1 -0
  8. package/lib/Defaults/index.js +51 -72
  9. package/lib/Signal/Group/ciphertext-message.js +12 -0
  10. package/lib/Signal/Group/group-session-builder.js +30 -0
  11. package/lib/Signal/Group/group_cipher.js +94 -0
  12. package/lib/Signal/Group/index.js +12 -0
  13. package/lib/Signal/Group/keyhelper.js +19 -0
  14. package/lib/Signal/Group/queue-job.js +54 -0
  15. package/lib/Signal/Group/sender-chain-key.js +32 -0
  16. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  17. package/lib/Signal/Group/sender-key-message.js +67 -0
  18. package/lib/Signal/Group/sender-key-name.js +48 -0
  19. package/lib/Signal/Group/sender-key-record.js +50 -0
  20. package/lib/Signal/Group/sender-key-state.js +96 -0
  21. package/{WASignalGroup/sender_message_key.js → lib/Signal/Group/sender-message-key.js} +4 -16
  22. package/lib/Signal/libsignal.js +41 -61
  23. package/lib/Socket/Client/index.js +3 -19
  24. package/lib/Socket/Client/types.js +11 -0
  25. package/lib/Socket/Client/websocket.js +50 -0
  26. package/lib/Socket/business.js +37 -42
  27. package/lib/Socket/chats.js +194 -187
  28. package/lib/Socket/communities.js +351 -0
  29. package/lib/Socket/groups.js +87 -90
  30. package/lib/Socket/index.js +7 -8
  31. package/lib/Socket/messages-recv.js +360 -335
  32. package/lib/Socket/messages-send.js +156 -279
  33. package/lib/Socket/mex.js +42 -0
  34. package/lib/Socket/newsletter.js +144 -213
  35. package/lib/Socket/socket.js +128 -161
  36. package/lib/Socket/usync.js +19 -26
  37. package/lib/Types/Auth.js +2 -2
  38. package/lib/Types/Call.js +2 -2
  39. package/lib/Types/Chat.js +8 -4
  40. package/lib/Types/Contact.js +2 -2
  41. package/lib/Types/Events.js +2 -2
  42. package/lib/Types/GroupMetadata.js +2 -2
  43. package/lib/Types/Label.js +3 -5
  44. package/lib/Types/LabelAssociation.js +3 -5
  45. package/lib/Types/Message.js +7 -7
  46. package/lib/Types/Newsletter.js +30 -17
  47. package/lib/Types/Product.js +2 -2
  48. package/lib/Types/Signal.js +2 -2
  49. package/lib/Types/Socket.js +3 -2
  50. package/lib/Types/State.js +2 -2
  51. package/lib/Types/USync.js +2 -2
  52. package/lib/Types/index.js +15 -31
  53. package/lib/Utils/auth-utils.js +31 -47
  54. package/lib/Utils/baileys-event-stream.js +15 -22
  55. package/lib/Utils/business.js +66 -69
  56. package/lib/Utils/chat-utils.js +200 -195
  57. package/lib/Utils/crypto.js +70 -85
  58. package/lib/Utils/decode-wa-message.js +47 -51
  59. package/lib/Utils/event-buffer.js +36 -46
  60. package/lib/Utils/generics.js +116 -188
  61. package/lib/Utils/history.js +37 -46
  62. package/lib/Utils/index.js +19 -33
  63. package/lib/Utils/link-preview.js +14 -55
  64. package/lib/Utils/logger.js +3 -7
  65. package/lib/Utils/lt-hash.js +23 -26
  66. package/lib/{Store → Utils}/make-in-memory-store.js +19 -27
  67. package/lib/Utils/make-mutex.js +7 -10
  68. package/lib/{Store → Utils}/make-ordered-dictionary.js +1 -3
  69. package/lib/Utils/messages-media.js +236 -368
  70. package/lib/Utils/messages.js +278 -510
  71. package/lib/Utils/noise-handler.js +22 -31
  72. package/lib/{Store → Utils}/object-repository.js +1 -4
  73. package/lib/Utils/process-message.js +144 -148
  74. package/lib/Utils/signal.js +71 -64
  75. package/lib/Utils/use-multi-file-auth-state.js +112 -84
  76. package/lib/Utils/validate-connection.js +72 -115
  77. package/lib/WABinary/constants.js +1281 -20
  78. package/lib/WABinary/decode.js +15 -52
  79. package/lib/WABinary/encode.js +14 -48
  80. package/lib/WABinary/generic-utils.js +31 -39
  81. package/lib/WABinary/index.js +6 -21
  82. package/lib/WABinary/jid-utils.js +23 -40
  83. package/lib/WABinary/types.js +2 -2
  84. package/lib/WAM/BinaryInfo.js +2 -5
  85. package/lib/WAM/constants.js +2257 -2366
  86. package/lib/WAM/encode.js +17 -21
  87. package/lib/WAM/index.js +4 -19
  88. package/lib/WAUSync/Protocols/USyncContactProtocol.js +8 -11
  89. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  90. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  91. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  92. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  93. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +3 -6
  94. package/lib/WAUSync/Protocols/index.js +5 -20
  95. package/lib/WAUSync/USyncQuery.js +34 -32
  96. package/lib/WAUSync/USyncUser.js +2 -5
  97. package/lib/WAUSync/index.js +4 -19
  98. package/lib/index.js +11 -33
  99. package/package.json +25 -54
  100. package/WASignalGroup/GroupProtocol.js +0 -1697
  101. package/WASignalGroup/ciphertext_message.js +0 -16
  102. package/WASignalGroup/group_cipher.js +0 -120
  103. package/WASignalGroup/group_session_builder.js +0 -46
  104. package/WASignalGroup/index.js +0 -5
  105. package/WASignalGroup/keyhelper.js +0 -21
  106. package/WASignalGroup/protobufs.js +0 -3
  107. package/WASignalGroup/queue_job.js +0 -69
  108. package/WASignalGroup/sender_chain_key.js +0 -50
  109. package/WASignalGroup/sender_key_distribution_message.js +0 -78
  110. package/WASignalGroup/sender_key_message.js +0 -92
  111. package/WASignalGroup/sender_key_name.js +0 -70
  112. package/WASignalGroup/sender_key_record.js +0 -56
  113. package/WASignalGroup/sender_key_state.js +0 -129
  114. package/lib/Defaults/baileys-version.json +0 -3
  115. package/lib/Defaults/phonenumber-mcc.json +0 -223
  116. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  117. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  118. package/lib/Socket/Client/web-socket-client.js +0 -62
  119. package/lib/Socket/registration.js +0 -166
  120. package/lib/Store/index.js +0 -8
  121. package/lib/Store/make-cache-manager-store.js +0 -83
  122. package/lib/Store/make-mongo-store.js +0 -567
@@ -0,0 +1,42 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { getBinaryNodeChild, S_WHATSAPP_NET } from '../WABinary/index.js';
3
+ const wMexQuery = (variables, queryId, query, generateMessageTag) => {
4
+ return query({
5
+ tag: 'iq',
6
+ attrs: {
7
+ id: generateMessageTag(),
8
+ type: 'get',
9
+ to: S_WHATSAPP_NET,
10
+ xmlns: 'w:mex'
11
+ },
12
+ content: [
13
+ {
14
+ tag: 'query',
15
+ attrs: { query_id: queryId },
16
+ content: Buffer.from(JSON.stringify({ variables }), 'utf-8')
17
+ }
18
+ ]
19
+ });
20
+ };
21
+ export const executeWMexQuery = async (variables, queryId, dataPath, query, generateMessageTag) => {
22
+ const result = await wMexQuery(variables, queryId, query, generateMessageTag);
23
+ const child = getBinaryNodeChild(result, 'result');
24
+ if (child?.content) {
25
+ const data = JSON.parse(child.content.toString());
26
+ if (data.errors && data.errors.length > 0) {
27
+ const errorMessages = data.errors.map((err) => err.message || 'Unknown error').join(', ');
28
+ const firstError = data.errors[0];
29
+ const errorCode = firstError.extensions?.error_code || 400;
30
+ throw new Boom(`GraphQL server error: ${errorMessages}`, { statusCode: errorCode, data: firstError });
31
+ }
32
+ const response = dataPath ? data?.data?.[dataPath] : data?.data;
33
+ if (typeof response !== 'undefined') {
34
+ return response;
35
+ }
36
+ }
37
+ const action = (dataPath || '').startsWith('xwa2_')
38
+ ? dataPath.substring(5).replace(/_/g, ' ')
39
+ : dataPath?.replace(/_/g, ' ');
40
+ throw new Boom(`Failed to ${action}, unexpected response structure.`, { statusCode: 400, data: result });
41
+ };
42
+ //# sourceMappingURL=mex.js.map
@@ -1,248 +1,179 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractNewsletterMetadata = exports.makeNewsletterSocket = void 0;
4
- const Types_1 = require("../Types");
5
- const Utils_1 = require("../Utils");
6
- const WABinary_1 = require("../WABinary");
7
- const groups_1 = require("./groups");
8
- var QueryIds;
9
- (function (QueryIds) {
10
- QueryIds["JOB_MUTATION"] = "7150902998257522";
11
- QueryIds["METADATA"] = "6620195908089573";
12
- QueryIds["UNFOLLOW"] = "7238632346214362";
13
- QueryIds["FOLLOW"] = "7871414976211147";
14
- QueryIds["UNMUTE"] = "7337137176362961";
15
- QueryIds["MUTE"] = "25151904754424642";
16
- QueryIds["CREATE"] = "6996806640408138";
17
- QueryIds["ADMIN_COUNT"] = "7130823597031706";
18
- QueryIds["CHANGE_OWNER"] = "7341777602580933";
19
- QueryIds["DELETE"] = "8316537688363079";
20
- QueryIds["DEMOTE"] = "6551828931592903";
21
- })(QueryIds || (QueryIds = {}));
22
- const makeNewsletterSocket = (config) => {
23
- const sock = (0, groups_1.makeGroupsSocket)(config);
24
- const { authState, signalRepository, query, generateMessageTag } = sock;
25
- const encoder = new TextEncoder();
26
- const newsletterQuery = async (jid, type, content) => (query({
27
- tag: 'iq',
28
- attrs: {
29
- id: generateMessageTag(),
30
- type,
31
- xmlns: 'newsletter',
32
- to: jid,
33
- },
34
- content
35
- }));
36
- const newsletterWMexQuery = async (jid, query_id, content) => (query({
37
- tag: 'iq',
38
- attrs: {
39
- id: generateMessageTag(),
40
- type: 'get',
41
- xmlns: 'w:mex',
42
- to: WABinary_1.S_WHATSAPP_NET,
43
- },
44
- content: [
45
- {
46
- tag: 'query',
47
- attrs: { query_id },
48
- content: encoder.encode(JSON.stringify({ variables: { newsletter_id: jid, ...content } }))
49
- }
50
- ]
51
- }));
52
- const parseFetchedUpdates = async (node, type) => {
53
- let child;
54
- if (type === 'messages')
55
- child = (0, WABinary_1.getBinaryNodeChild)(node, 'messages');
56
- else {
57
- const parent = (0, WABinary_1.getBinaryNodeChild)(node, 'message_updates');
58
- child = (0, WABinary_1.getBinaryNodeChild)(parent, 'messages');
59
- }
60
- return await Promise.all((0, WABinary_1.getAllBinaryNodeChildren)(child).map(async (messageNode) => {
61
- var _a, _b;
62
- messageNode.attrs.from = child === null || child === void 0 ? void 0 : child.attrs.jid;
63
- const views = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'views_count')) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.count;
64
- const reactionNode = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'reactions');
65
- const reactions = (0, WABinary_1.getBinaryNodeChildren)(reactionNode, 'reaction')
66
- .map(({ attrs }) => ({ count: +attrs.count, code: attrs.code }));
67
- let data;
68
- if (type === 'messages') {
69
- const { fullMessage: message, decrypt } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
70
- await decrypt();
71
- data = {
72
- server_id: messageNode.attrs.server_id,
73
- views: views ? +views : undefined,
74
- reactions,
75
- message
76
- };
77
- return data;
78
- }
79
- else {
80
- data = {
81
- server_id: messageNode.attrs.server_id,
82
- views: views ? +views : undefined,
83
- reactions
84
- };
85
- return data;
1
+ import { QueryIds, XWAPaths } from '../Types/index.js';
2
+ import { generateProfilePicture } from '../Utils/messages-media.js';
3
+ import { getBinaryNodeChild } from '../WABinary/index.js';
4
+ import { executeWMexQuery as genericExecuteWMexQuery } from './mex.js';
5
+ const parseNewsletterCreateResponse = (response) => {
6
+ const { id, thread_metadata: thread, viewer_metadata: viewer } = response;
7
+ return {
8
+ id: id,
9
+ owner: undefined,
10
+ name: thread.name.text,
11
+ creation_time: parseInt(thread.creation_time, 10),
12
+ description: thread.description.text,
13
+ invite: thread.invite,
14
+ subscribers: parseInt(thread.subscribers_count, 10),
15
+ verification: thread.verification,
16
+ picture: {
17
+ id: thread.picture.id,
18
+ directPath: thread.picture.direct_path
19
+ },
20
+ mute_state: viewer.mute
21
+ };
22
+ };
23
+ const parseNewsletterMetadata = (result) => {
24
+ if (typeof result !== 'object' || result === null) {
25
+ return null;
26
+ }
27
+ if ('id' in result && typeof result.id === 'string') {
28
+ return result;
29
+ }
30
+ if ('result' in result && typeof result.result === 'object' && result.result !== null && 'id' in result.result) {
31
+ return result.result;
32
+ }
33
+ return null;
34
+ };
35
+ export const makeNewsletterSocket = (sock) => {
36
+ const { query, generateMessageTag } = sock;
37
+ const executeWMexQuery = (variables, queryId, dataPath) => {
38
+ return genericExecuteWMexQuery(variables, queryId, dataPath, query, generateMessageTag);
39
+ };
40
+ const newsletterUpdate = async (jid, updates) => {
41
+ const variables = {
42
+ newsletter_id: jid,
43
+ updates: {
44
+ ...updates,
45
+ settings: null
86
46
  }
87
- }));
47
+ };
48
+ return executeWMexQuery(variables, QueryIds.UPDATE_METADATA, 'xwa2_newsletter_update');
88
49
  };
89
50
  return {
90
51
  ...sock,
91
- subscribeNewsletterUpdates: async (jid) => {
92
- var _a;
93
- const result = await newsletterQuery(jid, 'set', [{ tag: 'live_updates', attrs: {}, content: [] }]);
94
- return (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'live_updates')) === null || _a === void 0 ? void 0 : _a.attrs;
52
+ newsletterCreate: async (name, description) => {
53
+ const variables = {
54
+ input: {
55
+ name,
56
+ description: description ?? null
57
+ }
58
+ };
59
+ const rawResponse = await executeWMexQuery(variables, QueryIds.CREATE, XWAPaths.xwa2_newsletter_create);
60
+ return parseNewsletterCreateResponse(rawResponse);
95
61
  },
96
- newsletterReactionMode: async (jid, mode) => {
97
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
98
- updates: { settings: { reaction_codes: { value: mode } } }
99
- });
62
+ newsletterUpdate,
63
+ newsletterSubscribers: async (jid) => {
64
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.SUBSCRIBERS, XWAPaths.xwa2_newsletter_subscribers);
100
65
  },
101
- newsletterUpdateDescription: async (jid, description) => {
102
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
103
- updates: { description: description || '', settings: null }
104
- });
66
+ newsletterMetadata: async (type, key) => {
67
+ const variables = {
68
+ fetch_creation_time: true,
69
+ fetch_full_image: true,
70
+ fetch_viewer_metadata: true,
71
+ input: {
72
+ key,
73
+ type: type.toUpperCase()
74
+ }
75
+ };
76
+ const result = await executeWMexQuery(variables, QueryIds.METADATA, XWAPaths.xwa2_newsletter_metadata);
77
+ return parseNewsletterMetadata(result);
105
78
  },
106
- newsletterUpdateName: async (jid, name) => {
107
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
108
- updates: { name, settings: null }
109
- });
79
+ newsletterFollow: (jid) => {
80
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.FOLLOW, XWAPaths.xwa2_newsletter_follow);
110
81
  },
111
- newsletterUpdatePicture: async (jid, content) => {
112
- const { img } = await (0, Utils_1.generateProfilePicture)(content);
113
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
114
- updates: { picture: img.toString('base64'), settings: null }
115
- });
82
+ newsletterUnfollow: (jid) => {
83
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.UNFOLLOW, XWAPaths.xwa2_newsletter_unfollow);
116
84
  },
117
- newsletterRemovePicture: async (jid) => {
118
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
119
- updates: { picture: '', settings: null }
120
- });
85
+ newsletterMute: (jid) => {
86
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.MUTE, XWAPaths.xwa2_newsletter_mute_v2);
87
+ },
88
+ newsletterUnmute: (jid) => {
89
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.UNMUTE, XWAPaths.xwa2_newsletter_unmute_v2);
121
90
  },
122
- newsletterUnfollow: async (jid) => {
123
- await newsletterWMexQuery(jid, QueryIds.UNFOLLOW);
91
+ newsletterUpdateName: async (jid, name) => {
92
+ return await newsletterUpdate(jid, { name });
124
93
  },
125
- newsletterFollow: async (jid) => {
126
- await newsletterWMexQuery(jid, QueryIds.FOLLOW);
94
+ newsletterUpdateDescription: async (jid, description) => {
95
+ return await newsletterUpdate(jid, { description });
127
96
  },
128
- newsletterUnmute: async (jid) => {
129
- await newsletterWMexQuery(jid, QueryIds.UNMUTE);
97
+ newsletterUpdatePicture: async (jid, content) => {
98
+ const { img } = await generateProfilePicture(content);
99
+ return await newsletterUpdate(jid, { picture: img.toString('base64') });
130
100
  },
131
- newsletterMute: async (jid) => {
132
- await newsletterWMexQuery(jid, QueryIds.MUTE);
101
+ newsletterRemovePicture: async (jid) => {
102
+ return await newsletterUpdate(jid, { picture: '' });
133
103
  },
134
- newsletterCreate: async (name, description) => {
104
+ newsletterReactMessage: async (jid, serverId, reaction) => {
135
105
  await query({
106
+ tag: 'message',
107
+ attrs: {
108
+ to: jid,
109
+ ...(reaction ? {} : { edit: '7' }),
110
+ type: 'reaction',
111
+ server_id: serverId,
112
+ id: generateMessageTag()
113
+ },
114
+ content: [
115
+ {
116
+ tag: 'reaction',
117
+ attrs: reaction ? { code: reaction } : {}
118
+ }
119
+ ]
120
+ });
121
+ },
122
+ newsletterFetchMessages: async (jid, count, since, after) => {
123
+ const messageUpdateAttrs = {
124
+ count: count.toString()
125
+ };
126
+ if (typeof since === 'number') {
127
+ messageUpdateAttrs.since = since.toString();
128
+ }
129
+ if (after) {
130
+ messageUpdateAttrs.after = after.toString();
131
+ }
132
+ const result = await query({
136
133
  tag: 'iq',
137
134
  attrs: {
138
- to: WABinary_1.S_WHATSAPP_NET,
139
- xmlns: 'tos',
140
135
  id: generateMessageTag(),
141
- type: 'set'
136
+ type: 'get',
137
+ xmlns: 'newsletter',
138
+ to: jid
142
139
  },
143
140
  content: [
144
141
  {
145
- tag: 'notice',
146
- attrs: {
147
- id: '20601218',
148
- stage: '5'
149
- },
150
- content: []
142
+ tag: 'message_updates',
143
+ attrs: messageUpdateAttrs
151
144
  }
152
145
  ]
153
146
  });
154
- const result = await newsletterWMexQuery(undefined, QueryIds.CREATE, {
155
- input: { name, description }
156
- });
157
- return (0, exports.extractNewsletterMetadata)(result, true);
147
+ return result;
158
148
  },
159
- newsletterMetadata: async (type, key, role) => {
160
- const result = await newsletterWMexQuery(undefined, QueryIds.METADATA, {
161
- input: {
162
- key,
163
- type: type.toUpperCase(),
164
- view_role: role || 'GUEST'
149
+ subscribeNewsletterUpdates: async (jid) => {
150
+ const result = await query({
151
+ tag: 'iq',
152
+ attrs: {
153
+ id: generateMessageTag(),
154
+ type: 'set',
155
+ xmlns: 'newsletter',
156
+ to: jid
165
157
  },
166
- fetch_viewer_metadata: true,
167
- fetch_full_image: true,
168
- fetch_creation_time: true
158
+ content: [{ tag: 'live_updates', attrs: {}, content: [] }]
169
159
  });
170
- return (0, exports.extractNewsletterMetadata)(result);
160
+ const liveUpdatesNode = getBinaryNodeChild(result, 'live_updates');
161
+ const duration = liveUpdatesNode?.attrs?.duration;
162
+ return duration ? { duration: duration } : null;
171
163
  },
172
164
  newsletterAdminCount: async (jid) => {
173
- var _a, _b;
174
- const result = await newsletterWMexQuery(jid, QueryIds.ADMIN_COUNT);
175
- const buff = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
176
- return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
177
- },
178
- /**user is Lid, not Jid */
179
- newsletterChangeOwner: async (jid, user) => {
180
- await newsletterWMexQuery(jid, QueryIds.CHANGE_OWNER, {
181
- user_id: user
182
- });
165
+ const response = await executeWMexQuery({ newsletter_id: jid }, QueryIds.ADMIN_COUNT, XWAPaths.xwa2_newsletter_admin_count);
166
+ return response.admin_count;
183
167
  },
184
- /**user is Lid, not Jid */
185
- newsletterDemote: async (jid, user) => {
186
- await newsletterWMexQuery(jid, QueryIds.DEMOTE, {
187
- user_id: user
188
- });
189
- },
190
- newsletterDelete: async (jid) => {
191
- await newsletterWMexQuery(jid, QueryIds.DELETE);
168
+ newsletterChangeOwner: async (jid, newOwnerJid) => {
169
+ await executeWMexQuery({ newsletter_id: jid, user_id: newOwnerJid }, QueryIds.CHANGE_OWNER, XWAPaths.xwa2_newsletter_change_owner);
192
170
  },
193
- /**if code wasn't passed, the reaction will be removed (if is reacted) */
194
- newsletterReactMessage: async (jid, server_id, code) => {
195
- await query({
196
- tag: 'message',
197
- attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', server_id, id: (0, Utils_1.generateMessageID)() },
198
- content: [{
199
- tag: 'reaction',
200
- attrs: code ? { code } : {}
201
- }]
202
- });
171
+ newsletterDemote: async (jid, userJid) => {
172
+ await executeWMexQuery({ newsletter_id: jid, user_id: userJid }, QueryIds.DEMOTE, XWAPaths.xwa2_newsletter_demote);
203
173
  },
204
- newsletterFetchMessages: async (type, key, count, after) => {
205
- const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
206
- {
207
- tag: 'messages',
208
- attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100' }
209
- }
210
- ]);
211
- return await parseFetchedUpdates(result, 'messages');
212
- },
213
- newsletterFetchUpdates: async (jid, count, after, since) => {
214
- const result = await newsletterQuery(jid, 'get', [
215
- {
216
- tag: 'message_updates',
217
- attrs: { count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100', since: (since === null || since === void 0 ? void 0 : since.toString()) || '0' }
218
- }
219
- ]);
220
- return await parseFetchedUpdates(result, 'updates');
174
+ newsletterDelete: async (jid) => {
175
+ await executeWMexQuery({ newsletter_id: jid }, QueryIds.DELETE, XWAPaths.xwa2_newsletter_delete_v2);
221
176
  }
222
177
  };
223
178
  };
224
- exports.makeNewsletterSocket = makeNewsletterSocket;
225
- const extractNewsletterMetadata = (node, isCreate) => {
226
- var _a, _b, _c, _d;
227
- const result = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(node, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
228
- const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER];
229
- const metadata = {
230
- id: metadataPath.id,
231
- state: metadataPath.state.type,
232
- creation_time: +metadataPath.thread_metadata.creation_time,
233
- name: metadataPath.thread_metadata.name.text,
234
- nameTime: +metadataPath.thread_metadata.name.update_time,
235
- description: metadataPath.thread_metadata.description.text,
236
- descriptionTime: +metadataPath.thread_metadata.description.update_time,
237
- invite: metadataPath.thread_metadata.invite,
238
- handle: metadataPath.thread_metadata.handle,
239
- picture: ((_c = metadataPath.thread_metadata.picture) === null || _c === void 0 ? void 0 : _c.direct_path) || null,
240
- preview: ((_d = metadataPath.thread_metadata.preview) === null || _d === void 0 ? void 0 : _d.direct_path) || null,
241
- reaction_codes: metadataPath.thread_metadata.settings.reaction_codes.value,
242
- subscribers: +metadataPath.thread_metadata.subscribers_count,
243
- verification: metadataPath.thread_metadata.verification,
244
- viewer_metadata: metadataPath.viewer_metadata
245
- };
246
- return metadata;
247
- };
248
- exports.extractNewsletterMetadata = extractNewsletterMetadata;
179
+ //# sourceMappingURL=newsletter.js.map