whatsapp-web.js 1.24.0 → 1.25.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.
- package/example.js +29 -4
- package/index.d.ts +15 -1
- package/index.js +0 -1
- package/package.json +1 -1
- package/src/Client.js +535 -529
- package/src/authStrategies/LocalAuth.js +4 -1
- package/src/structures/GroupChat.js +12 -4
- package/src/structures/Message.js +6 -5
- package/src/util/Injected/AuthStore/AuthStore.js +17 -0
- package/src/util/Injected/AuthStore/LegacyAuthStore.js +22 -0
- package/src/util/Injected/LegacyStore.js +146 -0
- package/src/util/Injected/Store.js +166 -0
- package/src/util/{Injected.js → Injected/Utils.js} +31 -154
- package/src/webCache/LocalWebCache.js +3 -6
- package/src/authStrategies/LegacySessionAuth.js +0 -72
|
@@ -44,7 +44,10 @@ class LocalAuth extends BaseAuthStrategy {
|
|
|
44
44
|
|
|
45
45
|
async logout() {
|
|
46
46
|
if (this.userDataDir) {
|
|
47
|
-
|
|
47
|
+
await fs.promises.rm(this.userDataDir, { recursive: true, force: true })
|
|
48
|
+
.catch((e) => {
|
|
49
|
+
throw new Error(e);
|
|
50
|
+
});
|
|
48
51
|
}
|
|
49
52
|
}
|
|
50
53
|
|
|
@@ -98,7 +98,7 @@ class GroupChat extends Chat {
|
|
|
98
98
|
419: 'The participant can\'t be added because the group is full'
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
await window.Store.
|
|
101
|
+
await window.Store.GroupQueryAndUpdate(groupWid);
|
|
102
102
|
const groupMetadata = group.groupMetadata;
|
|
103
103
|
const groupParticipants = groupMetadata?.participants;
|
|
104
104
|
|
|
@@ -152,7 +152,7 @@ class GroupChat extends Chat {
|
|
|
152
152
|
|
|
153
153
|
if (autoSendInviteV4 && rpcResultCode === 403) {
|
|
154
154
|
let userChat, isInviteV4Sent = false;
|
|
155
|
-
window.Store.
|
|
155
|
+
window.Store.Contact.gadd(pWid, { silent: true });
|
|
156
156
|
|
|
157
157
|
if (rpcResult.name === 'ParticipantRequestCodeCanBeSent' &&
|
|
158
158
|
(userChat = await window.Store.Chat.find(pWid))) {
|
|
@@ -380,10 +380,18 @@ class GroupChat extends Chat {
|
|
|
380
380
|
async getInviteCode() {
|
|
381
381
|
const codeRes = await this.client.pupPage.evaluate(async chatId => {
|
|
382
382
|
const chatWid = window.Store.WidFactory.createWid(chatId);
|
|
383
|
-
|
|
383
|
+
try {
|
|
384
|
+
return window.compareWwebVersions(window.Debug.VERSION, '>=', '2.3000.0')
|
|
385
|
+
? await window.Store.GroupInvite.queryGroupInviteCode(chatWid, true)
|
|
386
|
+
: await window.Store.GroupInvite.queryGroupInviteCode(chatWid);
|
|
387
|
+
}
|
|
388
|
+
catch (err) {
|
|
389
|
+
if(err.name === 'ServerStatusCodeError') return undefined;
|
|
390
|
+
throw err;
|
|
391
|
+
}
|
|
384
392
|
}, this.id._serialized);
|
|
385
393
|
|
|
386
|
-
return codeRes
|
|
394
|
+
return codeRes?.code;
|
|
387
395
|
}
|
|
388
396
|
|
|
389
397
|
/**
|
|
@@ -434,10 +434,7 @@ class Message extends Base {
|
|
|
434
434
|
const chatId = typeof chat === 'string' ? chat : chat.id._serialized;
|
|
435
435
|
|
|
436
436
|
await this.client.pupPage.evaluate(async (msgId, chatId) => {
|
|
437
|
-
|
|
438
|
-
let chat = window.Store.Chat.get(chatId);
|
|
439
|
-
|
|
440
|
-
return await chat.forwardMessages([msg]);
|
|
437
|
+
return window.WWebJS.forwardMessage(chatId, msgId);
|
|
441
438
|
}, this.id._serialized, chatId);
|
|
442
439
|
}
|
|
443
440
|
|
|
@@ -508,7 +505,11 @@ class Message extends Base {
|
|
|
508
505
|
|
|
509
506
|
const canRevoke = window.Store.MsgActionChecks.canSenderRevokeMsg(msg) || window.Store.MsgActionChecks.canAdminRevokeMsg(msg);
|
|
510
507
|
if (everyone && canRevoke) {
|
|
511
|
-
|
|
508
|
+
if (window.compareWwebVersions(window.Debug.VERSION, '>=', '2.3000.0')) {
|
|
509
|
+
return window.Store.Cmd.sendRevokeMsgs(chat, { list: [msg], type: 'message' }, { clearMedia: true });
|
|
510
|
+
} else {
|
|
511
|
+
return window.Store.Cmd.sendRevokeMsgs(chat, [msg], { clearMedia: true, type: msg.id.fromMe ? 'Sender' : 'Admin' });
|
|
512
|
+
}
|
|
512
513
|
}
|
|
513
514
|
|
|
514
515
|
return window.Store.Cmd.sendDeleteMsgs(chat, [msg], true);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.ExposeAuthStore = () => {
|
|
4
|
+
window.AuthStore = {};
|
|
5
|
+
window.AuthStore.AppState = window.require('WAWebSocketModel').Socket;
|
|
6
|
+
window.AuthStore.Cmd = window.require('WAWebCmd').Cmd;
|
|
7
|
+
window.AuthStore.Conn = window.require('WAWebConnModel').Conn;
|
|
8
|
+
window.AuthStore.OfflineMessageHandler = window.require('WAWebOfflineHandler').OfflineMessageHandler;
|
|
9
|
+
window.AuthStore.PairingCodeLinkUtils = window.require('WAWebAltDeviceLinkingApi');
|
|
10
|
+
window.AuthStore.Base64Tools = window.require('WABase64');
|
|
11
|
+
window.AuthStore.RegistrationUtils = {
|
|
12
|
+
...window.require('WAWebCompanionRegClientUtils'),
|
|
13
|
+
...window.require('WAWebAdvSignatureApi'),
|
|
14
|
+
...window.require('WAWebUserPrefsInfoStore'),
|
|
15
|
+
...window.require('WAWebSignalStoreApi'),
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
//TODO: To be removed by version 2.3000.x hard release
|
|
4
|
+
|
|
5
|
+
exports.ExposeLegacyAuthStore = (moduleRaidStr) => {
|
|
6
|
+
eval('var moduleRaid = ' + moduleRaidStr);
|
|
7
|
+
// eslint-disable-next-line no-undef
|
|
8
|
+
window.mR = moduleRaid();
|
|
9
|
+
window.AuthStore = {};
|
|
10
|
+
window.AuthStore.AppState = window.mR.findModule('Socket')[0].Socket;
|
|
11
|
+
window.AuthStore.Cmd = window.mR.findModule('Cmd')[0].Cmd;
|
|
12
|
+
window.AuthStore.Conn = window.mR.findModule('Conn')[0].Conn;
|
|
13
|
+
window.AuthStore.OfflineMessageHandler = window.mR.findModule('OfflineMessageHandler')[0].OfflineMessageHandler;
|
|
14
|
+
window.AuthStore.PairingCodeLinkUtils = window.mR.findModule('initializeAltDeviceLinking')[0];
|
|
15
|
+
window.AuthStore.Base64Tools = window.mR.findModule('encodeB64')[0];
|
|
16
|
+
window.AuthStore.RegistrationUtils = {
|
|
17
|
+
...window.mR.findModule('getCompanionWebClientFromBrowser')[0],
|
|
18
|
+
...window.mR.findModule('verifyKeyIndexListAccountSignature')[0],
|
|
19
|
+
...window.mR.findModule('waNoiseInfo')[0],
|
|
20
|
+
...window.mR.findModule('waSignalStore')[0],
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
//TODO: To be removed by version 2.3000.x hard release
|
|
4
|
+
|
|
5
|
+
// Exposes the internal Store to the WhatsApp Web client
|
|
6
|
+
exports.ExposeLegacyStore = () => {
|
|
7
|
+
window.Store = Object.assign({}, window.mR.findModule(m => m.default && m.default.Chat)[0].default);
|
|
8
|
+
window.Store.AppState = window.mR.findModule('Socket')[0].Socket;
|
|
9
|
+
window.Store.Conn = window.mR.findModule('Conn')[0].Conn;
|
|
10
|
+
window.Store.BlockContact = window.mR.findModule('blockContact')[0];
|
|
11
|
+
window.Store.Call = window.mR.findModule((module) => module.default && module.default.Call)[0].default.Call;
|
|
12
|
+
window.Store.Cmd = window.mR.findModule('Cmd')[0].Cmd;
|
|
13
|
+
window.Store.CryptoLib = window.mR.findModule('decryptE2EMedia')[0];
|
|
14
|
+
window.Store.DownloadManager = window.mR.findModule('downloadManager')[0].downloadManager;
|
|
15
|
+
window.Store.GroupMetadata = window.mR.findModule('GroupMetadata')[0].default.GroupMetadata;
|
|
16
|
+
window.Store.GroupQueryAndUpdate = window.mR.findModule('queryAndUpdateGroupMetadataById')[0].queryAndUpdateGroupMetadataById;
|
|
17
|
+
window.Store.Label = window.mR.findModule('LabelCollection')[0].LabelCollection;
|
|
18
|
+
window.Store.MediaPrep = window.mR.findModule('prepRawMedia')[0];
|
|
19
|
+
window.Store.MediaObject = window.mR.findModule('getOrCreateMediaObject')[0];
|
|
20
|
+
window.Store.NumberInfo = window.mR.findModule('formattedPhoneNumber')[0];
|
|
21
|
+
window.Store.MediaTypes = window.mR.findModule('msgToMediaType')[0];
|
|
22
|
+
window.Store.MediaUpload = window.mR.findModule('uploadMedia')[0];
|
|
23
|
+
window.Store.MsgKey = window.mR.findModule((module) => module.default && module.default.fromString)[0].default;
|
|
24
|
+
window.Store.OpaqueData = window.mR.findModule(module => module.default && module.default.createFromData)[0].default;
|
|
25
|
+
window.Store.QueryProduct = window.mR.findModule('queryProduct')[0];
|
|
26
|
+
window.Store.QueryOrder = window.mR.findModule('queryOrder')[0];
|
|
27
|
+
window.Store.SendClear = window.mR.findModule('sendClear')[0];
|
|
28
|
+
window.Store.SendDelete = window.mR.findModule('sendDelete')[0];
|
|
29
|
+
window.Store.SendMessage = window.mR.findModule('addAndSendMsgToChat')[0];
|
|
30
|
+
window.Store.EditMessage = window.mR.findModule('addAndSendMessageEdit')[0];
|
|
31
|
+
window.Store.SendSeen = window.mR.findModule('sendSeen')[0];
|
|
32
|
+
window.Store.User = window.mR.findModule('getMaybeMeUser')[0];
|
|
33
|
+
window.Store.ContactMethods = window.mR.findModule('getUserid')[0];
|
|
34
|
+
window.Store.UploadUtils = window.mR.findModule((module) => (module.default && module.default.encryptAndUpload) ? module.default : null)[0].default;
|
|
35
|
+
window.Store.UserConstructor = window.mR.findModule((module) => (module.default && module.default.prototype && module.default.prototype.isServer && module.default.prototype.isUser) ? module.default : null)[0].default;
|
|
36
|
+
window.Store.Validators = window.mR.findModule('findLinks')[0];
|
|
37
|
+
window.Store.VCard = window.mR.findModule('vcardFromContactModel')[0];
|
|
38
|
+
window.Store.WidFactory = window.mR.findModule('createWid')[0];
|
|
39
|
+
window.Store.ProfilePic = window.mR.findModule('profilePicResync')[0];
|
|
40
|
+
window.Store.PresenceUtils = window.mR.findModule('sendPresenceAvailable')[0];
|
|
41
|
+
window.Store.ChatState = window.mR.findModule('sendChatStateComposing')[0];
|
|
42
|
+
window.Store.findCommonGroups = window.mR.findModule('findCommonGroups')[0].findCommonGroups;
|
|
43
|
+
window.Store.StatusUtils = window.mR.findModule('setMyStatus')[0];
|
|
44
|
+
window.Store.ConversationMsgs = window.mR.findModule('loadEarlierMsgs')[0];
|
|
45
|
+
window.Store.sendReactionToMsg = window.mR.findModule('sendReactionToMsg')[0].sendReactionToMsg;
|
|
46
|
+
window.Store.createOrUpdateReactionsModule = window.mR.findModule('createOrUpdateReactions')[0];
|
|
47
|
+
window.Store.EphemeralFields = window.mR.findModule('getEphemeralFields')[0];
|
|
48
|
+
window.Store.MsgActionChecks = window.mR.findModule('canSenderRevokeMsg')[0];
|
|
49
|
+
window.Store.QuotedMsg = window.mR.findModule('getQuotedMsgObj')[0];
|
|
50
|
+
window.Store.LinkPreview = window.mR.findModule('getLinkPreview')[0];
|
|
51
|
+
window.Store.Socket = window.mR.findModule('deprecatedSendIq')[0];
|
|
52
|
+
window.Store.SocketWap = window.mR.findModule('wap')[0];
|
|
53
|
+
window.Store.SearchContext = window.mR.findModule('getSearchContext')[0].getSearchContext;
|
|
54
|
+
window.Store.DrawerManager = window.mR.findModule('DrawerManager')[0].DrawerManager;
|
|
55
|
+
window.Store.LidUtils = window.mR.findModule('getCurrentLid')[0];
|
|
56
|
+
window.Store.WidToJid = window.mR.findModule('widToUserJid')[0];
|
|
57
|
+
window.Store.JidToWid = window.mR.findModule('userJidToUserWid')[0];
|
|
58
|
+
window.Store.getMsgInfo = (window.mR.findModule('sendQueryMsgInfo')[0] || {}).sendQueryMsgInfo || window.mR.findModule('queryMsgInfo')[0].queryMsgInfo;
|
|
59
|
+
window.Store.pinUnpinMsg = window.mR.findModule('sendPinInChatMsg')[0].sendPinInChatMsg;
|
|
60
|
+
|
|
61
|
+
/* eslint-disable no-undef, no-cond-assign */
|
|
62
|
+
window.Store.QueryExist = ((m = window.mR.findModule('queryExists')[0]) ? m.queryExists : window.mR.findModule('queryExist')[0].queryWidExists);
|
|
63
|
+
window.Store.ReplyUtils = (m = window.mR.findModule('canReplyMsg')).length > 0 && m[0];
|
|
64
|
+
/* eslint-enable no-undef, no-cond-assign */
|
|
65
|
+
|
|
66
|
+
window.Store.Settings = {
|
|
67
|
+
...window.mR.findModule('ChatlistPanelState')[0],
|
|
68
|
+
setPushname: window.mR.findModule((m) => m.setPushname && !m.ChatlistPanelState)[0].setPushname
|
|
69
|
+
};
|
|
70
|
+
window.Store.StickerTools = {
|
|
71
|
+
...window.mR.findModule('toWebpSticker')[0],
|
|
72
|
+
...window.mR.findModule('addWebpMetadata')[0]
|
|
73
|
+
};
|
|
74
|
+
window.Store.GroupUtils = {
|
|
75
|
+
...window.mR.findModule('createGroup')[0],
|
|
76
|
+
...window.mR.findModule('setGroupDescription')[0],
|
|
77
|
+
...window.mR.findModule('sendExitGroup')[0],
|
|
78
|
+
...window.mR.findModule('sendSetPicture')[0]
|
|
79
|
+
};
|
|
80
|
+
window.Store.GroupParticipants = {
|
|
81
|
+
...window.mR.findModule('promoteParticipants')[0],
|
|
82
|
+
...window.mR.findModule('sendAddParticipantsRPC')[0]
|
|
83
|
+
};
|
|
84
|
+
window.Store.GroupInvite = {
|
|
85
|
+
...window.mR.findModule('resetGroupInviteCode')[0],
|
|
86
|
+
...window.mR.findModule('queryGroupInvite')[0]
|
|
87
|
+
};
|
|
88
|
+
window.Store.GroupInviteV4 = {
|
|
89
|
+
...window.mR.findModule('queryGroupInviteV4')[0],
|
|
90
|
+
...window.mR.findModule('sendGroupInviteMessage')[0]
|
|
91
|
+
};
|
|
92
|
+
window.Store.MembershipRequestUtils = {
|
|
93
|
+
...window.mR.findModule('getMembershipApprovalRequests')[0],
|
|
94
|
+
...window.mR.findModule('sendMembershipRequestsActionRPC')[0]
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
if (!window.Store.Chat._find) {
|
|
98
|
+
window.Store.Chat._find = e => {
|
|
99
|
+
const target = window.Store.Chat.get(e);
|
|
100
|
+
return target ? Promise.resolve(target) : Promise.resolve({
|
|
101
|
+
id: e
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// eslint-disable-next-line no-undef
|
|
107
|
+
if ((m = window.mR.findModule('ChatCollection')[0]) && m.ChatCollection && typeof m.ChatCollection.findImpl === 'undefined' && typeof m.ChatCollection._find !== 'undefined') m.ChatCollection.findImpl = m.ChatCollection._find;
|
|
108
|
+
|
|
109
|
+
const _isMDBackend = window.mR.findModule('isMDBackend');
|
|
110
|
+
if(_isMDBackend && _isMDBackend[0] && _isMDBackend[0].isMDBackend) {
|
|
111
|
+
window.Store.MDBackend = _isMDBackend[0].isMDBackend();
|
|
112
|
+
} else {
|
|
113
|
+
window.Store.MDBackend = true;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const _features = window.mR.findModule('FEATURE_CHANGE_EVENT')[0];
|
|
117
|
+
if(_features) {
|
|
118
|
+
window.Store.Features = _features.LegacyPhoneFeatures;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Target options object description
|
|
123
|
+
* @typedef {Object} TargetOptions
|
|
124
|
+
* @property {string|number} module The name or a key of the target module to search
|
|
125
|
+
* @property {number} index The index value of the target module
|
|
126
|
+
* @property {string} function The function name to get from a module
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Function to modify functions
|
|
131
|
+
* @param {TargetOptions} target Options specifying the target function to search for modifying
|
|
132
|
+
* @param {Function} callback Modified function
|
|
133
|
+
*/
|
|
134
|
+
window.injectToFunction = (target, callback) => {
|
|
135
|
+
const module = typeof target.module === 'string'
|
|
136
|
+
? window.mR.findModule(target.module)
|
|
137
|
+
: window.mR.modules[target.module];
|
|
138
|
+
const originalFunction = module[target.index][target.function];
|
|
139
|
+
const modifiedFunction = (...args) => callback(originalFunction, ...args);
|
|
140
|
+
module[target.index][target.function] = modifiedFunction;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
window.injectToFunction({ module: 'mediaTypeFromProtobuf', index: 0, function: 'mediaTypeFromProtobuf' }, (func, ...args) => { const [proto] = args; return proto.locationMessage ? null : func(...args); });
|
|
144
|
+
|
|
145
|
+
window.injectToFunction({ module: 'typeAttributeFromProtobuf', index: 0, function: 'typeAttributeFromProtobuf' }, (func, ...args) => { const [proto] = args; return proto.locationMessage || proto.groupInviteMessage ? 'text' : func(...args); });
|
|
146
|
+
};
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.ExposeStore = () => {
|
|
4
|
+
/**
|
|
5
|
+
* Helper function that compares between two WWeb versions. Its purpose is to help the developer to choose the correct code implementation depending on the comparison value and the WWeb version.
|
|
6
|
+
* @param {string} lOperand The left operand for the WWeb version string to compare with
|
|
7
|
+
* @param {string} operator The comparison operator
|
|
8
|
+
* @param {string} rOperand The right operand for the WWeb version string to compare with
|
|
9
|
+
* @returns {boolean} Boolean value that indicates the result of the comparison
|
|
10
|
+
*/
|
|
11
|
+
window.compareWwebVersions = (lOperand, operator, rOperand) => {
|
|
12
|
+
if (!['>', '>=', '<', '<=', '='].includes(operator)) {
|
|
13
|
+
throw new class _ extends Error {
|
|
14
|
+
constructor(m) { super(m); this.name = 'CompareWwebVersionsError'; }
|
|
15
|
+
}('Invalid comparison operator is provided');
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
if (typeof lOperand !== 'string' || typeof rOperand !== 'string') {
|
|
19
|
+
throw new class _ extends Error {
|
|
20
|
+
constructor(m) { super(m); this.name = 'CompareWwebVersionsError'; }
|
|
21
|
+
}('A non-string WWeb version type is provided');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
lOperand = lOperand.replace(/-beta$/, '');
|
|
25
|
+
rOperand = rOperand.replace(/-beta$/, '');
|
|
26
|
+
|
|
27
|
+
while (lOperand.length !== rOperand.length) {
|
|
28
|
+
lOperand.length > rOperand.length
|
|
29
|
+
? rOperand = rOperand.concat('0')
|
|
30
|
+
: lOperand = lOperand.concat('0');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
lOperand = Number(lOperand.replace(/\./g, ''));
|
|
34
|
+
rOperand = Number(rOperand.replace(/\./g, ''));
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
operator === '>' ? lOperand > rOperand :
|
|
38
|
+
operator === '>=' ? lOperand >= rOperand :
|
|
39
|
+
operator === '<' ? lOperand < rOperand :
|
|
40
|
+
operator === '<=' ? lOperand <= rOperand :
|
|
41
|
+
operator === '=' ? lOperand === rOperand :
|
|
42
|
+
false
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
window.Store = Object.assign({}, window.require('WAWebCollections'));
|
|
47
|
+
window.Store.AppState = window.require('WAWebSocketModel').Socket;
|
|
48
|
+
window.Store.BlockContact = window.require('WAWebBlockContactAction');
|
|
49
|
+
window.Store.Conn = window.require('WAWebConnModel').Conn;
|
|
50
|
+
window.Store.Cmd = window.require('WAWebCmd').Cmd;
|
|
51
|
+
window.Store.DownloadManager = window.require('WAWebDownloadManager').downloadManager;
|
|
52
|
+
window.Store.GroupQueryAndUpdate = window.require('WAWebGroupQueryJob').queryAndUpdateGroupMetadataById;
|
|
53
|
+
window.Store.MediaPrep = window.require('WAWebPrepRawMedia');
|
|
54
|
+
window.Store.MediaObject = window.require('WAWebMediaStorage');
|
|
55
|
+
window.Store.MediaTypes = window.require('WAWebMmsMediaTypes');
|
|
56
|
+
window.Store.MediaUpload = window.require('WAWebMediaMmsV4Upload');
|
|
57
|
+
window.Store.MsgKey = window.require('WAWebMsgKey');
|
|
58
|
+
window.Store.NumberInfo = window.require('WAPhoneUtils');
|
|
59
|
+
window.Store.OpaqueData = window.require('WAWebMediaOpaqueData');
|
|
60
|
+
window.Store.QueryProduct = window.require('WAWebBizProductCatalogBridge');
|
|
61
|
+
window.Store.QueryOrder = window.require('WAWebBizOrderBridge');
|
|
62
|
+
window.Store.SendClear = window.require('WAWebChatClearBridge');
|
|
63
|
+
window.Store.SendDelete = window.require('WAWebDeleteChatAction');
|
|
64
|
+
window.Store.SendMessage = window.require('WAWebSendMsgChatAction');
|
|
65
|
+
window.Store.EditMessage = window.require('WAWebSendMessageEditAction');
|
|
66
|
+
window.Store.SendSeen = window.require('WAWebUpdateUnreadChatAction');
|
|
67
|
+
window.Store.User = window.require('WAWebUserPrefsMeUser');
|
|
68
|
+
window.Store.ContactMethods = window.require('WAWebContactGetters');
|
|
69
|
+
window.Store.UploadUtils = window.require('WAWebUploadManager');
|
|
70
|
+
window.Store.UserConstructor = window.require('WAWebWid');
|
|
71
|
+
window.Store.Validators = window.require('WALinkify');
|
|
72
|
+
window.Store.VCard = window.require('WAWebFrontendVcardUtils');
|
|
73
|
+
window.Store.WidFactory = window.require('WAWebWidFactory');
|
|
74
|
+
window.Store.ProfilePic = window.require('WAWebContactProfilePicThumbBridge');
|
|
75
|
+
window.Store.PresenceUtils = window.require('WAWebPresenceChatAction');
|
|
76
|
+
window.Store.ChatState = window.require('WAWebChatStateBridge');
|
|
77
|
+
window.Store.findCommonGroups = window.require('WAWebFindCommonGroupsContactAction').findCommonGroups;
|
|
78
|
+
window.Store.StatusUtils = window.require('WAWebContactStatusBridge');
|
|
79
|
+
window.Store.ConversationMsgs = window.require('WAWebChatLoadMessages');
|
|
80
|
+
window.Store.sendReactionToMsg = window.require('WAWebSendReactionMsgAction').sendReactionToMsg;
|
|
81
|
+
window.Store.createOrUpdateReactionsModule = window.require('WAWebDBCreateOrUpdateReactions');
|
|
82
|
+
window.Store.EphemeralFields = window.require('WAWebGetEphemeralFieldsMsgActionsUtils');
|
|
83
|
+
window.Store.MsgActionChecks = window.require('WAWebMsgActionCapability');
|
|
84
|
+
window.Store.QuotedMsg = window.require('WAWebQuotedMsgModelUtils');
|
|
85
|
+
window.Store.LinkPreview = window.require('WAWebLinkPreviewChatAction');
|
|
86
|
+
window.Store.Socket = window.require('WADeprecatedSendIq');
|
|
87
|
+
window.Store.SocketWap = window.require('WAWap');
|
|
88
|
+
window.Store.SearchContext = window.require('WAWebChatMessageSearch').getSearchContext;
|
|
89
|
+
window.Store.DrawerManager = window.require('WAWebDrawerManager').DrawerManager;
|
|
90
|
+
window.Store.LidUtils = window.require('WAWebApiContact');
|
|
91
|
+
window.Store.WidToJid = window.require('WAWebWidToJid');
|
|
92
|
+
window.Store.JidToWid = window.require('WAWebJidToWid');
|
|
93
|
+
window.Store.getMsgInfo = window.require('WAWebApiMessageInfoStore').queryMsgInfo;
|
|
94
|
+
window.Store.pinUnpinMsg = window.require('WAWebSendPinMessageAction').sendPinInChatMsg;
|
|
95
|
+
window.Store.QueryExist = window.require('WAWebQueryExistsJob').queryWidExists;
|
|
96
|
+
window.Store.ReplyUtils = window.require('WAWebMsgReply');
|
|
97
|
+
window.Store.Settings = window.require('WAWebUserPrefsGeneral');
|
|
98
|
+
window.Store.BotSecret = window.require('WAWebBotMessageSecret');
|
|
99
|
+
window.Store.BotProfiles = window.require('WAWebBotProfileCollection');
|
|
100
|
+
if (window.compareWwebVersions(window.Debug.VERSION, '>=', '2.3000.1014111620'))
|
|
101
|
+
window.Store.AddonReactionTable = window.require('WAWebAddonReactionTableMode').reactionTableMode;
|
|
102
|
+
|
|
103
|
+
window.Store.ForwardUtils = {
|
|
104
|
+
...window.require('WAWebForwardMessagesToChat')
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
window.Store.StickerTools = {
|
|
108
|
+
...window.require('WAWebImageUtils'),
|
|
109
|
+
...window.require('WAWebAddWebpMetadata')
|
|
110
|
+
};
|
|
111
|
+
window.Store.GroupUtils = {
|
|
112
|
+
...window.require('WAWebGroupCreateJob'),
|
|
113
|
+
...window.require('WAWebGroupModifyInfoJob'),
|
|
114
|
+
...window.require('WAWebExitGroupAction'),
|
|
115
|
+
...window.require('WAWebContactProfilePicThumbBridge')
|
|
116
|
+
};
|
|
117
|
+
window.Store.GroupParticipants = {
|
|
118
|
+
...window.require('WAWebModifyParticipantsGroupAction'),
|
|
119
|
+
...window.require('WASmaxGroupsAddParticipantsRPC')
|
|
120
|
+
};
|
|
121
|
+
window.Store.GroupInvite = {
|
|
122
|
+
...window.require('WAWebGroupInviteJob'),
|
|
123
|
+
...window.require('WAWebGroupQueryJob')
|
|
124
|
+
};
|
|
125
|
+
window.Store.GroupInviteV4 = {
|
|
126
|
+
...window.require('WAWebGroupInviteV4Job'),
|
|
127
|
+
...window.require('WAWebChatSendMessages')
|
|
128
|
+
};
|
|
129
|
+
window.Store.MembershipRequestUtils = {
|
|
130
|
+
...window.require('WAWebApiMembershipApprovalRequestStore'),
|
|
131
|
+
...window.require('WASmaxGroupsMembershipRequestsActionRPC')
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
if (!window.Store.Chat._find || !window.Store.Chat.findImpl) {
|
|
135
|
+
window.Store.Chat._find = e => {
|
|
136
|
+
const target = window.Store.Chat.get(e);
|
|
137
|
+
return target ? Promise.resolve(target) : Promise.resolve({
|
|
138
|
+
id: e
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
window.Store.Chat.findImpl = window.Store.Chat._find;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Target options object description
|
|
146
|
+
* @typedef {Object} TargetOptions
|
|
147
|
+
* @property {string|number} module The target module
|
|
148
|
+
* @property {string} function The function name to get from a module
|
|
149
|
+
*/
|
|
150
|
+
/**
|
|
151
|
+
* Function to modify functions
|
|
152
|
+
* @param {TargetOptions} target Options specifying the target function to search for modifying
|
|
153
|
+
* @param {Function} callback Modified function
|
|
154
|
+
*/
|
|
155
|
+
window.injectToFunction = (target, callback) => {
|
|
156
|
+
const module = window.require(target.module);
|
|
157
|
+
const originalFunction = module[target.function];
|
|
158
|
+
const modifiedFunction = (...args) => callback(originalFunction, ...args);
|
|
159
|
+
module[target.function] = modifiedFunction;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
window.injectToFunction({ module: 'WAWebBackendJobsCommon', function: 'mediaTypeFromProtobuf' }, (func, ...args) => { const [proto] = args; return proto.locationMessage ? null : func(...args); });
|
|
163
|
+
|
|
164
|
+
window.injectToFunction({ module: 'WAWebE2EProtoUtils', function: 'typeAttributeFromProtobuf' }, (func, ...args) => { const [proto] = args; return proto.locationMessage || proto.groupInviteMessage ? 'text' : func(...args); });
|
|
165
|
+
|
|
166
|
+
};
|