gifted-baileys 1.5.4 → 1.5.6
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.
- package/LICENSE +1 -1
- package/WAProto/WAProto.proto +88 -969
- package/WAProto/index.d.ts +1256 -13195
- package/WAProto/index.js +74730 -125106
- package/package.json +9 -27
- package/src/Defaults/baileys-version.json +3 -0
- package/{lib → src}/Defaults/index.js +14 -7
- package/src/Defaults/index.ts +131 -0
- package/src/README.md +1 -0
- package/src/Signal/libsignal.js +180 -0
- package/src/Signal/libsignal.ts +141 -0
- package/src/Socket/Client/abstract-socket-client.ts +19 -0
- package/{lib → src}/Socket/Client/index.js +3 -2
- package/src/Socket/Client/index.ts +3 -0
- package/src/Socket/Client/mobile-socket-client.js +78 -0
- package/src/Socket/Client/mobile-socket-client.ts +66 -0
- package/src/Socket/Client/web-socket-client.js +75 -0
- package/src/Socket/Client/web-socket-client.ts +57 -0
- package/{lib → src}/Socket/business.js +33 -28
- package/src/Socket/business.ts +281 -0
- package/{lib → src}/Socket/chats.js +176 -174
- package/src/Socket/chats.ts +1030 -0
- package/{lib → src}/Socket/groups.js +68 -80
- package/src/Socket/groups.ts +356 -0
- package/{lib → src}/Socket/index.js +1 -4
- package/src/Socket/index.ts +13 -0
- package/{lib → src}/Socket/messages-recv.js +211 -378
- package/src/Socket/messages-recv.ts +985 -0
- package/{lib → src}/Socket/messages-send.js +177 -452
- package/src/Socket/messages-send.ts +871 -0
- package/{lib → src}/Socket/newsletter.js +98 -107
- package/src/Socket/newsletter.ts +282 -0
- package/{lib → src}/Socket/registration.js +48 -56
- package/src/Socket/registration.ts +250 -0
- package/{lib → src}/Socket/socket.js +77 -77
- package/src/Socket/socket.ts +777 -0
- package/src/Store/index.ts +3 -0
- package/{lib → src}/Store/make-cache-manager-store.js +34 -25
- package/src/Store/make-cache-manager-store.ts +100 -0
- package/{lib → src}/Store/make-in-memory-store.js +32 -36
- package/src/Store/make-in-memory-store.ts +475 -0
- package/src/Store/make-ordered-dictionary.ts +86 -0
- package/{lib → src}/Store/object-repository.js +1 -1
- package/src/Store/object-repository.ts +32 -0
- package/src/Tests/test.app-state-sync.js +204 -0
- package/src/Tests/test.app-state-sync.ts +207 -0
- package/src/Tests/test.event-buffer.js +270 -0
- package/src/Tests/test.event-buffer.ts +319 -0
- package/src/Tests/test.key-store.js +76 -0
- package/src/Tests/test.key-store.ts +92 -0
- package/src/Tests/test.libsignal.js +141 -0
- package/src/Tests/test.libsignal.ts +186 -0
- package/src/Tests/test.media-download.js +93 -0
- package/src/Tests/test.media-download.ts +76 -0
- package/src/Tests/test.messages.js +33 -0
- package/src/Tests/test.messages.ts +37 -0
- package/src/Tests/utils.js +34 -0
- package/src/Tests/utils.ts +36 -0
- package/src/Types/Auth.ts +113 -0
- package/src/Types/Call.ts +15 -0
- package/src/Types/Chat.ts +106 -0
- package/{lib/Types/Contact.d.ts → src/Types/Contact.ts} +9 -8
- package/src/Types/Events.ts +93 -0
- package/src/Types/GroupMetadata.ts +53 -0
- package/src/Types/Label.ts +36 -0
- package/{lib/Types/LabelAssociation.d.ts → src/Types/LabelAssociation.ts} +22 -16
- package/src/Types/Message.ts +288 -0
- package/src/Types/Newsletter.ts +98 -0
- package/src/Types/Product.ts +85 -0
- package/src/Types/Signal.ts +68 -0
- package/{lib/Types/Socket.d.ts → src/Types/Socket.ts} +68 -61
- package/src/Types/State.ts +29 -0
- package/src/Types/index.ts +59 -0
- package/{lib → src}/Utils/auth-utils.js +90 -73
- package/src/Utils/auth-utils.ts +222 -0
- package/src/Utils/baileys-event-stream.js +92 -0
- package/src/Utils/baileys-event-stream.ts +66 -0
- package/{lib → src}/Utils/business.js +43 -15
- package/src/Utils/business.ts +275 -0
- package/{lib → src}/Utils/chat-utils.js +94 -87
- package/src/Utils/chat-utils.ts +860 -0
- package/{lib → src}/Utils/crypto.js +2 -4
- package/src/Utils/crypto.ts +131 -0
- package/src/Utils/decode-wa-message.js +211 -0
- package/src/Utils/decode-wa-message.ts +228 -0
- package/{lib → src}/Utils/event-buffer.js +13 -4
- package/src/Utils/event-buffer.ts +613 -0
- package/{lib → src}/Utils/generics.js +86 -67
- package/src/Utils/generics.ts +434 -0
- package/{lib → src}/Utils/history.js +39 -13
- package/src/Utils/history.ts +112 -0
- package/src/Utils/index.ts +17 -0
- package/{lib → src}/Utils/link-preview.js +54 -17
- package/src/Utils/link-preview.ts +122 -0
- package/src/Utils/logger.ts +3 -0
- package/src/Utils/lt-hash.ts +61 -0
- package/{lib → src}/Utils/make-mutex.js +13 -4
- package/src/Utils/make-mutex.ts +44 -0
- package/{lib → src}/Utils/messages-media.js +255 -193
- package/src/Utils/messages-media.ts +847 -0
- package/{lib → src}/Utils/messages.js +118 -588
- package/src/Utils/messages.ts +956 -0
- package/src/Utils/noise-handler.ts +197 -0
- package/{lib → src}/Utils/process-message.js +30 -27
- package/src/Utils/process-message.ts +414 -0
- package/{lib → src}/Utils/signal.js +42 -25
- package/src/Utils/signal.ts +177 -0
- package/{lib → src}/Utils/use-multi-file-auth-state.js +28 -27
- package/src/Utils/use-multi-file-auth-state.ts +90 -0
- package/{lib → src}/Utils/validate-connection.js +9 -40
- package/src/Utils/validate-connection.ts +238 -0
- package/src/WABinary/constants.ts +42 -0
- package/src/WABinary/decode.ts +265 -0
- package/{lib → src}/WABinary/encode.js +10 -16
- package/src/WABinary/encode.ts +236 -0
- package/src/WABinary/generic-utils.ts +121 -0
- package/src/WABinary/index.ts +5 -0
- package/src/WABinary/jid-utils.ts +68 -0
- package/src/WABinary/types.ts +17 -0
- package/src/WAM/BinaryInfo.ts +12 -0
- package/src/WAM/constants.ts +15382 -0
- package/src/WAM/encode.ts +174 -0
- package/src/WAM/index.ts +3 -0
- package/{lib → src}/index.js +0 -1
- package/src/index.ts +13 -0
- package/README.md +0 -1645
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/index.d.ts +0 -284
- package/lib/Signal/libsignal.d.ts +0 -3
- package/lib/Signal/libsignal.js +0 -161
- package/lib/Socket/Client/abstract-socket-client.d.ts +0 -15
- package/lib/Socket/Client/index.d.ts +0 -2
- package/lib/Socket/Client/mobile-socket-client.d.ts +0 -12
- package/lib/Socket/Client/mobile-socket-client.js +0 -65
- package/lib/Socket/Client/types.d.ts +0 -17
- package/lib/Socket/Client/types.js +0 -13
- package/lib/Socket/Client/websocket.d.ts +0 -12
- package/lib/Socket/Client/websocket.js +0 -62
- package/lib/Socket/business.d.ts +0 -170
- package/lib/Socket/chats.d.ts +0 -81
- package/lib/Socket/groups.d.ts +0 -115
- package/lib/Socket/index.d.ts +0 -172
- package/lib/Socket/messages-recv.d.ts +0 -158
- package/lib/Socket/messages-send.d.ts +0 -155
- package/lib/Socket/newsletter.d.ts +0 -132
- package/lib/Socket/registration.d.ts +0 -264
- package/lib/Socket/socket.d.ts +0 -44
- package/lib/Socket/usync.d.ts +0 -37
- package/lib/Socket/usync.js +0 -70
- package/lib/Store/index.d.ts +0 -3
- package/lib/Store/make-cache-manager-store.d.ts +0 -14
- package/lib/Store/make-in-memory-store.d.ts +0 -118
- package/lib/Store/make-ordered-dictionary.d.ts +0 -13
- package/lib/Store/object-repository.d.ts +0 -10
- package/lib/Types/Auth.d.ts +0 -109
- package/lib/Types/Call.d.ts +0 -13
- package/lib/Types/Chat.d.ts +0 -107
- package/lib/Types/Events.d.ts +0 -172
- package/lib/Types/GroupMetadata.d.ts +0 -56
- package/lib/Types/Label.d.ts +0 -46
- package/lib/Types/Message.d.ts +0 -433
- package/lib/Types/Newsletter.d.ts +0 -92
- package/lib/Types/Product.d.ts +0 -78
- package/lib/Types/Signal.d.ts +0 -57
- package/lib/Types/State.d.ts +0 -27
- package/lib/Types/USync.d.ts +0 -25
- package/lib/Types/USync.js +0 -2
- package/lib/Types/index.d.ts +0 -66
- package/lib/Utils/auth-utils.d.ts +0 -18
- package/lib/Utils/baileys-event-stream.d.ts +0 -16
- package/lib/Utils/baileys-event-stream.js +0 -63
- package/lib/Utils/business.d.ts +0 -22
- package/lib/Utils/chat-utils.d.ts +0 -70
- package/lib/Utils/crypto.d.ts +0 -40
- package/lib/Utils/decode-wa-message.d.ts +0 -36
- package/lib/Utils/decode-wa-message.js +0 -226
- package/lib/Utils/event-buffer.d.ts +0 -35
- package/lib/Utils/generics.d.ts +0 -88
- package/lib/Utils/history.d.ts +0 -19
- package/lib/Utils/index.d.ts +0 -17
- package/lib/Utils/link-preview.d.ts +0 -21
- package/lib/Utils/logger.d.ts +0 -2
- package/lib/Utils/lt-hash.d.ts +0 -12
- package/lib/Utils/make-mutex.d.ts +0 -7
- package/lib/Utils/messages-media.d.ts +0 -113
- package/lib/Utils/messages.d.ts +0 -77
- package/lib/Utils/noise-handler.d.ts +0 -20
- package/lib/Utils/process-message.d.ts +0 -41
- package/lib/Utils/signal.d.ts +0 -33
- package/lib/Utils/use-multi-file-auth-state.d.ts +0 -12
- package/lib/Utils/validate-connection.d.ts +0 -11
- package/lib/WABinary/constants.d.ts +0 -27
- package/lib/WABinary/decode.d.ts +0 -6
- package/lib/WABinary/encode.d.ts +0 -2
- package/lib/WABinary/generic-utils.d.ts +0 -14
- package/lib/WABinary/index.d.ts +0 -5
- package/lib/WABinary/jid-utils.d.ts +0 -31
- package/lib/WABinary/types.d.ts +0 -18
- package/lib/WAM/BinaryInfo.d.ts +0 -8
- package/lib/WAM/constants.d.ts +0 -38
- package/lib/WAM/encode.d.ts +0 -2
- package/lib/WAM/index.d.ts +0 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -32
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -57
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -30
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
- package/lib/WAUSync/Protocols/index.d.ts +0 -4
- package/lib/WAUSync/Protocols/index.js +0 -20
- package/lib/WAUSync/USyncQuery.d.ts +0 -26
- package/lib/WAUSync/USyncQuery.js +0 -79
- package/lib/WAUSync/USyncUser.d.ts +0 -10
- package/lib/WAUSync/USyncUser.js +0 -22
- package/lib/WAUSync/index.d.ts +0 -3
- package/lib/WAUSync/index.js +0 -19
- /package/{lib → src}/Defaults/phonenumber-mcc.json +0 -0
- /package/{lib → src}/Socket/Client/abstract-socket-client.js +0 -0
- /package/{lib → src}/Store/index.js +0 -0
- /package/{lib → src}/Store/make-ordered-dictionary.js +0 -0
- /package/{lib → src}/Types/Auth.js +0 -0
- /package/{lib → src}/Types/Call.js +0 -0
- /package/{lib → src}/Types/Chat.js +0 -0
- /package/{lib → src}/Types/Contact.js +0 -0
- /package/{lib → src}/Types/Events.js +0 -0
- /package/{lib → src}/Types/GroupMetadata.js +0 -0
- /package/{lib → src}/Types/Label.js +0 -0
- /package/{lib → src}/Types/LabelAssociation.js +0 -0
- /package/{lib → src}/Types/Message.js +0 -0
- /package/{lib → src}/Types/Newsletter.js +0 -0
- /package/{lib → src}/Types/Product.js +0 -0
- /package/{lib → src}/Types/Signal.js +0 -0
- /package/{lib → src}/Types/Socket.js +0 -0
- /package/{lib → src}/Types/State.js +0 -0
- /package/{lib → src}/Types/index.js +0 -0
- /package/{lib → src}/Utils/index.js +0 -0
- /package/{lib → src}/Utils/logger.js +0 -0
- /package/{lib → src}/Utils/lt-hash.js +0 -0
- /package/{lib → src}/Utils/noise-handler.js +0 -0
- /package/{lib → src}/WABinary/constants.js +0 -0
- /package/{lib → src}/WABinary/decode.js +0 -0
- /package/{lib → src}/WABinary/generic-utils.js +0 -0
- /package/{lib → src}/WABinary/index.js +0 -0
- /package/{lib → src}/WABinary/jid-utils.js +0 -0
- /package/{lib → src}/WABinary/types.js +0 -0
- /package/{lib → src}/WAM/BinaryInfo.js +0 -0
- /package/{lib → src}/WAM/constants.js +0 -0
- /package/{lib → src}/WAM/encode.js +0 -0
- /package/{lib → src}/WAM/index.js +0 -0
- /package/{lib → src}/gifted +0 -0
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.extractGroupMetadata = exports.makeGroupsSocket = void 0;
|
|
4
13
|
const WAProto_1 = require("../../WAProto");
|
|
@@ -9,21 +18,23 @@ const chats_1 = require("./chats");
|
|
|
9
18
|
const makeGroupsSocket = (config) => {
|
|
10
19
|
const sock = (0, chats_1.makeChatsSocket)(config);
|
|
11
20
|
const { authState, ev, query, upsertMessage } = sock;
|
|
12
|
-
const groupQuery =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const groupQuery = (jid, type, content) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
return (query({
|
|
23
|
+
tag: 'iq',
|
|
24
|
+
attrs: {
|
|
25
|
+
type,
|
|
26
|
+
xmlns: 'w:g2',
|
|
27
|
+
to: jid,
|
|
28
|
+
},
|
|
29
|
+
content
|
|
30
|
+
}));
|
|
31
|
+
});
|
|
32
|
+
const groupMetadata = (jid) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const result = yield groupQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }]);
|
|
23
34
|
return (0, exports.extractGroupMetadata)(result);
|
|
24
|
-
};
|
|
25
|
-
const groupFetchAllParticipating =
|
|
26
|
-
const result =
|
|
35
|
+
});
|
|
36
|
+
const groupFetchAllParticipating = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const result = yield query({
|
|
27
38
|
tag: 'iq',
|
|
28
39
|
attrs: {
|
|
29
40
|
to: '@g.us',
|
|
@@ -56,22 +67,18 @@ const makeGroupsSocket = (config) => {
|
|
|
56
67
|
}
|
|
57
68
|
sock.ev.emit('groups.update', Object.values(data));
|
|
58
69
|
return data;
|
|
59
|
-
};
|
|
60
|
-
sock.ws.on('CB:ib,,dirty',
|
|
70
|
+
});
|
|
71
|
+
sock.ws.on('CB:ib,,dirty', (node) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
72
|
const { attrs } = (0, WABinary_1.getBinaryNodeChild)(node, 'dirty');
|
|
62
73
|
if (attrs.type !== 'groups') {
|
|
63
74
|
return;
|
|
64
75
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
});
|
|
68
|
-
return {
|
|
69
|
-
...sock,
|
|
70
|
-
groupQuery,
|
|
71
|
-
groupMetadata,
|
|
72
|
-
groupCreate: async (subject, participants) => {
|
|
76
|
+
yield groupFetchAllParticipating();
|
|
77
|
+
yield sock.cleanDirtyBits('groups');
|
|
78
|
+
}));
|
|
79
|
+
return Object.assign(Object.assign({}, sock), { groupMetadata, groupCreate: (subject, participants) => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
80
|
const key = (0, Utils_1.generateMessageID)();
|
|
74
|
-
const result =
|
|
81
|
+
const result = yield groupQuery('@g.us', 'set', [
|
|
75
82
|
{
|
|
76
83
|
tag: 'create',
|
|
77
84
|
attrs: {
|
|
@@ -85,9 +92,8 @@ const makeGroupsSocket = (config) => {
|
|
|
85
92
|
}
|
|
86
93
|
]);
|
|
87
94
|
return (0, exports.extractGroupMetadata)(result);
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
await groupQuery('@g.us', 'set', [
|
|
95
|
+
}), groupLeave: (id) => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
|
+
yield groupQuery('@g.us', 'set', [
|
|
91
97
|
{
|
|
92
98
|
tag: 'leave',
|
|
93
99
|
attrs: {},
|
|
@@ -96,18 +102,16 @@ const makeGroupsSocket = (config) => {
|
|
|
96
102
|
]
|
|
97
103
|
}
|
|
98
104
|
]);
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
await groupQuery(jid, 'set', [
|
|
105
|
+
}), groupUpdateSubject: (jid, subject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
106
|
+
yield groupQuery(jid, 'set', [
|
|
102
107
|
{
|
|
103
108
|
tag: 'subject',
|
|
104
109
|
attrs: {},
|
|
105
110
|
content: Buffer.from(subject, 'utf-8')
|
|
106
111
|
}
|
|
107
112
|
]);
|
|
108
|
-
},
|
|
109
|
-
|
|
110
|
-
const result = await groupQuery(jid, 'get', [
|
|
113
|
+
}), groupRequestParticipantsList: (jid) => __awaiter(void 0, void 0, void 0, function* () {
|
|
114
|
+
const result = yield groupQuery(jid, 'get', [
|
|
111
115
|
{
|
|
112
116
|
tag: 'membership_approval_requests',
|
|
113
117
|
attrs: {}
|
|
@@ -116,9 +120,8 @@ const makeGroupsSocket = (config) => {
|
|
|
116
120
|
const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_approval_requests');
|
|
117
121
|
const participants = (0, WABinary_1.getBinaryNodeChildren)(node, 'membership_approval_request');
|
|
118
122
|
return participants.map(v => v.attrs);
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
const result = await groupQuery(jid, 'set', [{
|
|
123
|
+
}), groupRequestParticipantsUpdate: (jid, participants, action) => __awaiter(void 0, void 0, void 0, function* () {
|
|
124
|
+
const result = yield groupQuery(jid, 'set', [{
|
|
122
125
|
tag: 'membership_requests_action',
|
|
123
126
|
attrs: {},
|
|
124
127
|
content: [
|
|
@@ -138,9 +141,8 @@ const makeGroupsSocket = (config) => {
|
|
|
138
141
|
return participantsAffected.map(p => {
|
|
139
142
|
return { status: p.attrs.error || '200', jid: p.attrs.jid };
|
|
140
143
|
});
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
const result = await groupQuery(jid, 'set', [
|
|
144
|
+
}), groupParticipantsUpdate: (jid, participants, action) => __awaiter(void 0, void 0, void 0, function* () {
|
|
145
|
+
const result = yield groupQuery(jid, 'set', [
|
|
144
146
|
{
|
|
145
147
|
tag: action,
|
|
146
148
|
attrs: {},
|
|
@@ -155,47 +157,40 @@ const makeGroupsSocket = (config) => {
|
|
|
155
157
|
return participantsAffected.map(p => {
|
|
156
158
|
return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p };
|
|
157
159
|
});
|
|
158
|
-
},
|
|
159
|
-
groupUpdateDescription: async (jid, description) => {
|
|
160
|
+
}), groupUpdateDescription: (jid, description) => __awaiter(void 0, void 0, void 0, function* () {
|
|
160
161
|
var _a;
|
|
161
|
-
const metadata =
|
|
162
|
+
const metadata = yield groupMetadata(jid);
|
|
162
163
|
const prev = (_a = metadata.descId) !== null && _a !== void 0 ? _a : null;
|
|
163
|
-
|
|
164
|
+
yield groupQuery(jid, 'set', [
|
|
164
165
|
{
|
|
165
166
|
tag: 'description',
|
|
166
|
-
attrs: {
|
|
167
|
-
...(description ? { id: (0, Utils_1.generateMessageID)() } : { delete: 'true' }),
|
|
168
|
-
...(prev ? { prev } : {})
|
|
169
|
-
},
|
|
167
|
+
attrs: Object.assign(Object.assign({}, (description ? { id: (0, Utils_1.generateMessageID)() } : { delete: 'true' })), (prev ? { prev } : {})),
|
|
170
168
|
content: description ? [
|
|
171
169
|
{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }
|
|
172
170
|
] : undefined
|
|
173
171
|
}
|
|
174
172
|
]);
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);
|
|
173
|
+
}), groupInviteCode: (jid) => __awaiter(void 0, void 0, void 0, function* () {
|
|
174
|
+
const result = yield groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);
|
|
178
175
|
const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite');
|
|
179
176
|
return inviteNode === null || inviteNode === void 0 ? void 0 : inviteNode.attrs.code;
|
|
180
|
-
},
|
|
181
|
-
|
|
182
|
-
const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);
|
|
177
|
+
}), groupRevokeInvite: (jid) => __awaiter(void 0, void 0, void 0, function* () {
|
|
178
|
+
const result = yield groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);
|
|
183
179
|
const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite');
|
|
184
180
|
return inviteNode === null || inviteNode === void 0 ? void 0 : inviteNode.attrs.code;
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);
|
|
181
|
+
}), groupAcceptInvite: (code) => __awaiter(void 0, void 0, void 0, function* () {
|
|
182
|
+
const results = yield groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);
|
|
188
183
|
const result = (0, WABinary_1.getBinaryNodeChild)(results, 'group');
|
|
189
184
|
return result === null || result === void 0 ? void 0 : result.attrs.jid;
|
|
190
|
-
},
|
|
185
|
+
}),
|
|
191
186
|
/**
|
|
192
187
|
* accept a GroupInviteMessage
|
|
193
188
|
* @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
|
|
194
189
|
* @param inviteMessage the message to accept
|
|
195
190
|
*/
|
|
196
|
-
groupAcceptInviteV4: ev.createBufferedFunction(
|
|
191
|
+
groupAcceptInviteV4: ev.createBufferedFunction((key, inviteMessage) => __awaiter(void 0, void 0, void 0, function* () {
|
|
197
192
|
key = typeof key === 'string' ? { remoteJid: key } : key;
|
|
198
|
-
const results =
|
|
193
|
+
const results = yield groupQuery(inviteMessage.groupJid, 'set', [{
|
|
199
194
|
tag: 'accept',
|
|
200
195
|
attrs: {
|
|
201
196
|
code: inviteMessage.inviteCode,
|
|
@@ -222,7 +217,7 @@ const makeGroupsSocket = (config) => {
|
|
|
222
217
|
]);
|
|
223
218
|
}
|
|
224
219
|
// generate the group add message
|
|
225
|
-
|
|
220
|
+
yield upsertMessage({
|
|
226
221
|
key: {
|
|
227
222
|
remoteJid: inviteMessage.groupJid,
|
|
228
223
|
id: (0, Utils_1.generateMessageID)(),
|
|
@@ -237,28 +232,21 @@ const makeGroupsSocket = (config) => {
|
|
|
237
232
|
messageTimestamp: (0, Utils_1.unixTimestampSeconds)()
|
|
238
233
|
}, 'notify');
|
|
239
234
|
return results.attrs.from;
|
|
240
|
-
}),
|
|
241
|
-
|
|
242
|
-
const results = await groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
|
|
235
|
+
})), groupGetInviteInfo: (code) => __awaiter(void 0, void 0, void 0, function* () {
|
|
236
|
+
const results = yield groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
|
|
243
237
|
return (0, exports.extractGroupMetadata)(results);
|
|
244
|
-
},
|
|
245
|
-
groupToggleEphemeral: async (jid, ephemeralExpiration) => {
|
|
238
|
+
}), groupToggleEphemeral: (jid, ephemeralExpiration) => __awaiter(void 0, void 0, void 0, function* () {
|
|
246
239
|
const content = ephemeralExpiration ?
|
|
247
240
|
{ tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } } :
|
|
248
241
|
{ tag: 'not_ephemeral', attrs: {} };
|
|
249
|
-
|
|
250
|
-
},
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
},
|
|
257
|
-
groupJoinApprovalMode: async (jid, mode) => {
|
|
258
|
-
await groupQuery(jid, 'set', [{ tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'group_join', attrs: { state: mode } }] }]);
|
|
259
|
-
},
|
|
260
|
-
groupFetchAllParticipating
|
|
261
|
-
};
|
|
242
|
+
yield groupQuery(jid, 'set', [content]);
|
|
243
|
+
}), groupSettingUpdate: (jid, setting) => __awaiter(void 0, void 0, void 0, function* () {
|
|
244
|
+
yield groupQuery(jid, 'set', [{ tag: setting, attrs: {} }]);
|
|
245
|
+
}), groupMemberAddMode: (jid, mode) => __awaiter(void 0, void 0, void 0, function* () {
|
|
246
|
+
yield groupQuery(jid, 'set', [{ tag: 'member_add_mode', attrs: {}, content: mode }]);
|
|
247
|
+
}), groupJoinApprovalMode: (jid, mode) => __awaiter(void 0, void 0, void 0, function* () {
|
|
248
|
+
yield groupQuery(jid, 'set', [{ tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'group_join', attrs: { state: mode } }] }]);
|
|
249
|
+
}), groupFetchAllParticipating });
|
|
262
250
|
};
|
|
263
251
|
exports.makeGroupsSocket = makeGroupsSocket;
|
|
264
252
|
const extractGroupMetadata = (result) => {
|
|
@@ -297,7 +285,7 @@ const extractGroupMetadata = (result) => {
|
|
|
297
285
|
admin: (attrs.type || null),
|
|
298
286
|
};
|
|
299
287
|
}),
|
|
300
|
-
ephemeralDuration: eph ? +eph :
|
|
288
|
+
ephemeralDuration: eph ? +eph : undefined
|
|
301
289
|
};
|
|
302
290
|
return metadata;
|
|
303
291
|
};
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { proto } from '../../WAProto'
|
|
2
|
+
import { GroupMetadata, GroupParticipant, ParticipantAction, SocketConfig, WAMessageKey, WAMessageStubType } from '../Types'
|
|
3
|
+
import { generateMessageID, unixTimestampSeconds } from '../Utils'
|
|
4
|
+
import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary'
|
|
5
|
+
import { makeChatsSocket } from './chats'
|
|
6
|
+
|
|
7
|
+
export const makeGroupsSocket = (config: SocketConfig) => {
|
|
8
|
+
const sock = makeChatsSocket(config)
|
|
9
|
+
const { authState, ev, query, upsertMessage } = sock
|
|
10
|
+
|
|
11
|
+
const groupQuery = async(jid: string, type: 'get' | 'set', content: BinaryNode[]) => (
|
|
12
|
+
query({
|
|
13
|
+
tag: 'iq',
|
|
14
|
+
attrs: {
|
|
15
|
+
type,
|
|
16
|
+
xmlns: 'w:g2',
|
|
17
|
+
to: jid,
|
|
18
|
+
},
|
|
19
|
+
content
|
|
20
|
+
})
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
const groupMetadata = async(jid: string) => {
|
|
24
|
+
const result = await groupQuery(
|
|
25
|
+
jid,
|
|
26
|
+
'get',
|
|
27
|
+
[ { tag: 'query', attrs: { request: 'interactive' } } ]
|
|
28
|
+
)
|
|
29
|
+
return extractGroupMetadata(result)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
const groupFetchAllParticipating = async() => {
|
|
34
|
+
const result = await query({
|
|
35
|
+
tag: 'iq',
|
|
36
|
+
attrs: {
|
|
37
|
+
to: '@g.us',
|
|
38
|
+
xmlns: 'w:g2',
|
|
39
|
+
type: 'get',
|
|
40
|
+
},
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
tag: 'participating',
|
|
44
|
+
attrs: { },
|
|
45
|
+
content: [
|
|
46
|
+
{ tag: 'participants', attrs: { } },
|
|
47
|
+
{ tag: 'description', attrs: { } }
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
})
|
|
52
|
+
const data: { [_: string]: GroupMetadata } = { }
|
|
53
|
+
const groupsChild = getBinaryNodeChild(result, 'groups')
|
|
54
|
+
if(groupsChild) {
|
|
55
|
+
const groups = getBinaryNodeChildren(groupsChild, 'group')
|
|
56
|
+
for(const groupNode of groups) {
|
|
57
|
+
const meta = extractGroupMetadata({
|
|
58
|
+
tag: 'result',
|
|
59
|
+
attrs: { },
|
|
60
|
+
content: [groupNode]
|
|
61
|
+
})
|
|
62
|
+
data[meta.id] = meta
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
sock.ev.emit('groups.update', Object.values(data))
|
|
67
|
+
|
|
68
|
+
return data
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
sock.ws.on('CB:ib,,dirty', async(node: BinaryNode) => {
|
|
72
|
+
const { attrs } = getBinaryNodeChild(node, 'dirty')!
|
|
73
|
+
if(attrs.type !== 'groups') {
|
|
74
|
+
return
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
await groupFetchAllParticipating()
|
|
78
|
+
await sock.cleanDirtyBits('groups')
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
...sock,
|
|
83
|
+
groupMetadata,
|
|
84
|
+
groupCreate: async(subject: string, participants: string[]) => {
|
|
85
|
+
const key = generateMessageID()
|
|
86
|
+
const result = await groupQuery(
|
|
87
|
+
'@g.us',
|
|
88
|
+
'set',
|
|
89
|
+
[
|
|
90
|
+
{
|
|
91
|
+
tag: 'create',
|
|
92
|
+
attrs: {
|
|
93
|
+
subject,
|
|
94
|
+
key
|
|
95
|
+
},
|
|
96
|
+
content: participants.map(jid => ({
|
|
97
|
+
tag: 'participant',
|
|
98
|
+
attrs: { jid }
|
|
99
|
+
}))
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
)
|
|
103
|
+
return extractGroupMetadata(result)
|
|
104
|
+
},
|
|
105
|
+
groupLeave: async(id: string) => {
|
|
106
|
+
await groupQuery(
|
|
107
|
+
'@g.us',
|
|
108
|
+
'set',
|
|
109
|
+
[
|
|
110
|
+
{
|
|
111
|
+
tag: 'leave',
|
|
112
|
+
attrs: { },
|
|
113
|
+
content: [
|
|
114
|
+
{ tag: 'group', attrs: { id } }
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
)
|
|
119
|
+
},
|
|
120
|
+
groupUpdateSubject: async(jid: string, subject: string) => {
|
|
121
|
+
await groupQuery(
|
|
122
|
+
jid,
|
|
123
|
+
'set',
|
|
124
|
+
[
|
|
125
|
+
{
|
|
126
|
+
tag: 'subject',
|
|
127
|
+
attrs: { },
|
|
128
|
+
content: Buffer.from(subject, 'utf-8')
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
)
|
|
132
|
+
},
|
|
133
|
+
groupRequestParticipantsList: async(jid: string) => {
|
|
134
|
+
const result = await groupQuery(
|
|
135
|
+
jid,
|
|
136
|
+
'get',
|
|
137
|
+
[
|
|
138
|
+
{
|
|
139
|
+
tag: 'membership_approval_requests',
|
|
140
|
+
attrs: {}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
)
|
|
144
|
+
const node = getBinaryNodeChild(result, 'membership_approval_requests')
|
|
145
|
+
const participants = getBinaryNodeChildren(node, 'membership_approval_request')
|
|
146
|
+
return participants.map(v => v.attrs)
|
|
147
|
+
},
|
|
148
|
+
groupRequestParticipantsUpdate: async(jid: string, participants: string[], action: 'approve' | 'reject') => {
|
|
149
|
+
const result = await groupQuery(
|
|
150
|
+
jid,
|
|
151
|
+
'set',
|
|
152
|
+
[{
|
|
153
|
+
tag: 'membership_requests_action',
|
|
154
|
+
attrs: {},
|
|
155
|
+
content: [
|
|
156
|
+
{
|
|
157
|
+
tag: action,
|
|
158
|
+
attrs: { },
|
|
159
|
+
content: participants.map(jid => ({
|
|
160
|
+
tag: 'participant',
|
|
161
|
+
attrs: { jid }
|
|
162
|
+
}))
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}]
|
|
166
|
+
)
|
|
167
|
+
const node = getBinaryNodeChild(result, 'membership_requests_action')
|
|
168
|
+
const nodeAction = getBinaryNodeChild(node, action)
|
|
169
|
+
const participantsAffected = getBinaryNodeChildren(nodeAction, 'participant')
|
|
170
|
+
return participantsAffected.map(p => {
|
|
171
|
+
return { status: p.attrs.error || '200', jid: p.attrs.jid }
|
|
172
|
+
})
|
|
173
|
+
},
|
|
174
|
+
groupParticipantsUpdate: async(
|
|
175
|
+
jid: string,
|
|
176
|
+
participants: string[],
|
|
177
|
+
action: ParticipantAction
|
|
178
|
+
) => {
|
|
179
|
+
const result = await groupQuery(
|
|
180
|
+
jid,
|
|
181
|
+
'set',
|
|
182
|
+
[
|
|
183
|
+
{
|
|
184
|
+
tag: action,
|
|
185
|
+
attrs: { },
|
|
186
|
+
content: participants.map(jid => ({
|
|
187
|
+
tag: 'participant',
|
|
188
|
+
attrs: { jid }
|
|
189
|
+
}))
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
)
|
|
193
|
+
const node = getBinaryNodeChild(result, action)
|
|
194
|
+
const participantsAffected = getBinaryNodeChildren(node!, 'participant')
|
|
195
|
+
return participantsAffected.map(p => {
|
|
196
|
+
return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p }
|
|
197
|
+
})
|
|
198
|
+
},
|
|
199
|
+
groupUpdateDescription: async(jid: string, description?: string) => {
|
|
200
|
+
const metadata = await groupMetadata(jid)
|
|
201
|
+
const prev = metadata.descId ?? null
|
|
202
|
+
|
|
203
|
+
await groupQuery(
|
|
204
|
+
jid,
|
|
205
|
+
'set',
|
|
206
|
+
[
|
|
207
|
+
{
|
|
208
|
+
tag: 'description',
|
|
209
|
+
attrs: {
|
|
210
|
+
...(description ? { id: generateMessageID() } : { delete: 'true' }),
|
|
211
|
+
...(prev ? { prev } : {})
|
|
212
|
+
},
|
|
213
|
+
content: description ? [
|
|
214
|
+
{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }
|
|
215
|
+
] : undefined
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
)
|
|
219
|
+
},
|
|
220
|
+
groupInviteCode: async(jid: string) => {
|
|
221
|
+
const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }])
|
|
222
|
+
const inviteNode = getBinaryNodeChild(result, 'invite')
|
|
223
|
+
return inviteNode?.attrs.code
|
|
224
|
+
},
|
|
225
|
+
groupRevokeInvite: async(jid: string) => {
|
|
226
|
+
const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }])
|
|
227
|
+
const inviteNode = getBinaryNodeChild(result, 'invite')
|
|
228
|
+
return inviteNode?.attrs.code
|
|
229
|
+
},
|
|
230
|
+
groupAcceptInvite: async(code: string) => {
|
|
231
|
+
const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }])
|
|
232
|
+
const result = getBinaryNodeChild(results, 'group')
|
|
233
|
+
return result?.attrs.jid
|
|
234
|
+
},
|
|
235
|
+
/**
|
|
236
|
+
* accept a GroupInviteMessage
|
|
237
|
+
* @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
|
|
238
|
+
* @param inviteMessage the message to accept
|
|
239
|
+
*/
|
|
240
|
+
groupAcceptInviteV4: ev.createBufferedFunction(async(key: string | WAMessageKey, inviteMessage: proto.Message.IGroupInviteMessage) => {
|
|
241
|
+
key = typeof key === 'string' ? { remoteJid: key } : key
|
|
242
|
+
const results = await groupQuery(inviteMessage.groupJid!, 'set', [{
|
|
243
|
+
tag: 'accept',
|
|
244
|
+
attrs: {
|
|
245
|
+
code: inviteMessage.inviteCode!,
|
|
246
|
+
expiration: inviteMessage.inviteExpiration!.toString(),
|
|
247
|
+
admin: key.remoteJid!
|
|
248
|
+
}
|
|
249
|
+
}])
|
|
250
|
+
|
|
251
|
+
// if we have the full message key
|
|
252
|
+
// update the invite message to be expired
|
|
253
|
+
if(key.id) {
|
|
254
|
+
// create new invite message that is expired
|
|
255
|
+
inviteMessage = proto.Message.GroupInviteMessage.fromObject(inviteMessage)
|
|
256
|
+
inviteMessage.inviteExpiration = 0
|
|
257
|
+
inviteMessage.inviteCode = ''
|
|
258
|
+
ev.emit('messages.update', [
|
|
259
|
+
{
|
|
260
|
+
key,
|
|
261
|
+
update: {
|
|
262
|
+
message: {
|
|
263
|
+
groupInviteMessage: inviteMessage
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
])
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// generate the group add message
|
|
271
|
+
await upsertMessage(
|
|
272
|
+
{
|
|
273
|
+
key: {
|
|
274
|
+
remoteJid: inviteMessage.groupJid,
|
|
275
|
+
id: generateMessageID(),
|
|
276
|
+
fromMe: false,
|
|
277
|
+
participant: key.remoteJid,
|
|
278
|
+
},
|
|
279
|
+
messageStubType: WAMessageStubType.GROUP_PARTICIPANT_ADD,
|
|
280
|
+
messageStubParameters: [
|
|
281
|
+
authState.creds.me!.id
|
|
282
|
+
],
|
|
283
|
+
participant: key.remoteJid,
|
|
284
|
+
messageTimestamp: unixTimestampSeconds()
|
|
285
|
+
},
|
|
286
|
+
'notify'
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
return results.attrs.from
|
|
290
|
+
}),
|
|
291
|
+
groupGetInviteInfo: async(code: string) => {
|
|
292
|
+
const results = await groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }])
|
|
293
|
+
return extractGroupMetadata(results)
|
|
294
|
+
},
|
|
295
|
+
groupToggleEphemeral: async(jid: string, ephemeralExpiration: number) => {
|
|
296
|
+
const content: BinaryNode = ephemeralExpiration ?
|
|
297
|
+
{ tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } } :
|
|
298
|
+
{ tag: 'not_ephemeral', attrs: { } }
|
|
299
|
+
await groupQuery(jid, 'set', [content])
|
|
300
|
+
},
|
|
301
|
+
groupSettingUpdate: async(jid: string, setting: 'announcement' | 'not_announcement' | 'locked' | 'unlocked') => {
|
|
302
|
+
await groupQuery(jid, 'set', [ { tag: setting, attrs: { } } ])
|
|
303
|
+
},
|
|
304
|
+
groupMemberAddMode: async(jid: string, mode: 'admin_add' | 'all_member_add') => {
|
|
305
|
+
await groupQuery(jid, 'set', [ { tag: 'member_add_mode', attrs: { }, content: mode } ])
|
|
306
|
+
},
|
|
307
|
+
groupJoinApprovalMode: async(jid: string, mode: 'on' | 'off') => {
|
|
308
|
+
await groupQuery(jid, 'set', [ { tag: 'membership_approval_mode', attrs: { }, content: [ { tag: 'group_join', attrs: { state: mode } } ] } ])
|
|
309
|
+
},
|
|
310
|
+
groupFetchAllParticipating
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
export const extractGroupMetadata = (result: BinaryNode) => {
|
|
316
|
+
const group = getBinaryNodeChild(result, 'group')!
|
|
317
|
+
const descChild = getBinaryNodeChild(group, 'description')
|
|
318
|
+
let desc: string | undefined
|
|
319
|
+
let descId: string | undefined
|
|
320
|
+
if(descChild) {
|
|
321
|
+
desc = getBinaryNodeChildString(descChild, 'body')
|
|
322
|
+
descId = descChild.attrs.id
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
const groupId = group.attrs.id.includes('@') ? group.attrs.id : jidEncode(group.attrs.id, 'g.us')
|
|
326
|
+
const eph = getBinaryNodeChild(group, 'ephemeral')?.attrs.expiration
|
|
327
|
+
const memberAddMode = getBinaryNodeChildString(group, 'member_add_mode') === 'all_member_add'
|
|
328
|
+
const metadata: GroupMetadata = {
|
|
329
|
+
id: groupId,
|
|
330
|
+
subject: group.attrs.subject,
|
|
331
|
+
subjectOwner: group.attrs.s_o,
|
|
332
|
+
subjectTime: +group.attrs.s_t,
|
|
333
|
+
size: getBinaryNodeChildren(group, 'participant').length,
|
|
334
|
+
creation: +group.attrs.creation,
|
|
335
|
+
owner: group.attrs.creator ? jidNormalizedUser(group.attrs.creator) : undefined,
|
|
336
|
+
desc,
|
|
337
|
+
descId,
|
|
338
|
+
linkedParent: getBinaryNodeChild(group, 'linked_parent')?.attrs.jid || undefined,
|
|
339
|
+
restrict: !!getBinaryNodeChild(group, 'locked'),
|
|
340
|
+
announce: !!getBinaryNodeChild(group, 'announcement'),
|
|
341
|
+
isCommunity: !!getBinaryNodeChild(group, 'parent'),
|
|
342
|
+
isCommunityAnnounce: !!getBinaryNodeChild(group, 'default_sub_group'),
|
|
343
|
+
joinApprovalMode: !!getBinaryNodeChild(group, 'membership_approval_mode'),
|
|
344
|
+
memberAddMode,
|
|
345
|
+
participants: getBinaryNodeChildren(group, 'participant').map(
|
|
346
|
+
({ attrs }) => {
|
|
347
|
+
return {
|
|
348
|
+
id: attrs.jid,
|
|
349
|
+
admin: (attrs.type || null) as GroupParticipant['admin'],
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
),
|
|
353
|
+
ephemeralDuration: eph ? +eph : undefined
|
|
354
|
+
}
|
|
355
|
+
return metadata
|
|
356
|
+
}
|
|
@@ -3,8 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const Defaults_1 = require("../Defaults");
|
|
4
4
|
const registration_1 = require("./registration");
|
|
5
5
|
// export the last socket layer
|
|
6
|
-
const makeWASocket = (config) => ((0, registration_1.makeRegistrationSocket)({
|
|
7
|
-
...Defaults_1.DEFAULT_CONNECTION_CONFIG,
|
|
8
|
-
...config
|
|
9
|
-
}));
|
|
6
|
+
const makeWASocket = (config) => ((0, registration_1.makeRegistrationSocket)(Object.assign(Object.assign({}, Defaults_1.DEFAULT_CONNECTION_CONFIG), config)));
|
|
10
7
|
exports.default = makeWASocket;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DEFAULT_CONNECTION_CONFIG } from '../Defaults'
|
|
2
|
+
import { UserFacingSocketConfig } from '../Types'
|
|
3
|
+
import { makeRegistrationSocket as _makeSocket } from './registration'
|
|
4
|
+
|
|
5
|
+
// export the last socket layer
|
|
6
|
+
const makeWASocket = (config: UserFacingSocketConfig) => (
|
|
7
|
+
_makeSocket({
|
|
8
|
+
...DEFAULT_CONNECTION_CONFIG,
|
|
9
|
+
...config
|
|
10
|
+
})
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
export default makeWASocket
|