Farewell, Webpack! Re-injection, Pairing Code login, and 2.24x jumbofix (#2816)
* fix(webpack-exodus): Added the new patch * fix(webpack-exodus): Fixed v2.3000.x and v2.24 * chore(webpack-exodus): eslint * fix(webpack-exodus): Fixed Store * fix(webpack-exodus): slight store fix * chore(webpack-exodus): fix example so that I don't crash on every load * chore: eslint fix * fix(webpack-exodus): prevent confusion with build systems * fix(webpack-exodus): Add proper groups module * fix(webpack-exodus): Fix order queries * fix(webpack-exodus): Bad export name * feat(webpack-exodus): Re-injection, No more selectors, Pairing Code auth * fix(webpack-exodus): Eslint and better login/logout handling * fix(webpack-exodus): 2.24 compatibility * revert testing options * chore(webpack-exodus): ESLint * chore(webpack-exodus): final eslint tweak (did not commit with last commit for some reason) * style: fix broken link in readme file * fix(webpack-exodus): Fix forwarding messages * fix(webpack-exodus): finish forwarding function * Making the ESLint god happy * Fix window.Store.ProfilePic.profilePicFind is not a function error (#3001) * Change window.Store.ProfilePic.profilePicFind to window.Store.ProfilePic.requestProfilePicFromServer * Prevent breaking v2.2x * refactor: make it more readable --------- Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com> * Sanitize, improves and fixes * make ESList god happy * fix getInviteCode for group (#3007) (#3029) * fix getInviteCode for group (#3007) * move changes to proper getInviteCode method. * style fix * refactor: add try-catch in a case the user is not a group admin * refactor: handle promise properly --------- Co-authored-by: Sven Neumann <s.neumann@websix.de> Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com> * fixes * Update LocalWebCache.js * fix delete on 2.3000 (#3048) * fix delete on 2.3000 * fix compareWwebVersions * fix: use proper comparison operator --------- Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com> * Implement bot invoking capabilities (#3009) * Implement bot invoking capabilities * Update index.d.ts * Eslint * Webpack exodus fix message_reaction event (#3099) * exposed WAWebAddonReactionTableMode * capture reaction using WAWebAddonReactionTableMode * move compareWwebVersions and check version before trying to expose new store * message_reaction on example.js (#3102) * handle message_reaction event on example.js * log wweb version on ready * fix reactions on pvt chats (#3104) * New group function * new group settings * Update Client.js --------- Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com> Co-authored-by: tuyuribr <45042245+tuyuribr@users.noreply.github.com> Co-authored-by: Seow Zhen Jun <56989187+seowzhenjun0126@users.noreply.github.com> Co-authored-by: Sven <sven2neumann@gmail.com> Co-authored-by: Sven Neumann <s.neumann@websix.de> Co-authored-by: Jorge Rocha Gualtieri <jorge@jrg.com.br> Co-authored-by: Mateus Mercer <accounts@matbm.net>
This commit is contained in:
parent
24b11b7d3f
commit
13ce571c64
1 changed files with 986 additions and 777 deletions
166
src/util/Injected/Store.js
Normal file
166
src/util/Injected/Store.js
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
'use strict';
|
||||
|
||||
exports.ExposeStore = () => {
|
||||
/**
|
||||
* 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.
|
||||
* @param {string} lOperand The left operand for the WWeb version string to compare with
|
||||
* @param {string} operator The comparison operator
|
||||
* @param {string} rOperand The right operand for the WWeb version string to compare with
|
||||
* @returns {boolean} Boolean value that indicates the result of the comparison
|
||||
*/
|
||||
window.compareWwebVersions = (lOperand, operator, rOperand) => {
|
||||
if (!['>', '>=', '<', '<=', '='].includes(operator)) {
|
||||
throw new class _ extends Error {
|
||||
constructor(m) { super(m); this.name = 'CompareWwebVersionsError'; }
|
||||
}('Invalid comparison operator is provided');
|
||||
|
||||
}
|
||||
if (typeof lOperand !== 'string' || typeof rOperand !== 'string') {
|
||||
throw new class _ extends Error {
|
||||
constructor(m) { super(m); this.name = 'CompareWwebVersionsError'; }
|
||||
}('A non-string WWeb version type is provided');
|
||||
}
|
||||
|
||||
lOperand = lOperand.replace(/-beta$/, '');
|
||||
rOperand = rOperand.replace(/-beta$/, '');
|
||||
|
||||
while (lOperand.length !== rOperand.length) {
|
||||
lOperand.length > rOperand.length
|
||||
? rOperand = rOperand.concat('0')
|
||||
: lOperand = lOperand.concat('0');
|
||||
}
|
||||
|
||||
lOperand = Number(lOperand.replace(/\./g, ''));
|
||||
rOperand = Number(rOperand.replace(/\./g, ''));
|
||||
|
||||
return (
|
||||
operator === '>' ? lOperand > rOperand :
|
||||
operator === '>=' ? lOperand >= rOperand :
|
||||
operator === '<' ? lOperand < rOperand :
|
||||
operator === '<=' ? lOperand <= rOperand :
|
||||
operator === '=' ? lOperand === rOperand :
|
||||
false
|
||||
);
|
||||
};
|
||||
|
||||
window.Store = Object.assign({}, window.require('WAWebCollections'));
|
||||
window.Store.AppState = window.require('WAWebSocketModel').Socket;
|
||||
window.Store.BlockContact = window.require('WAWebBlockContactAction');
|
||||
window.Store.Conn = window.require('WAWebConnModel').Conn;
|
||||
window.Store.Cmd = window.require('WAWebCmd').Cmd;
|
||||
window.Store.DownloadManager = window.require('WAWebDownloadManager').downloadManager;
|
||||
window.Store.GroupQueryAndUpdate = window.require('WAWebGroupQueryJob').queryAndUpdateGroupMetadataById;
|
||||
window.Store.MediaPrep = window.require('WAWebPrepRawMedia');
|
||||
window.Store.MediaObject = window.require('WAWebMediaStorage');
|
||||
window.Store.MediaTypes = window.require('WAWebMmsMediaTypes');
|
||||
window.Store.MediaUpload = window.require('WAWebMediaMmsV4Upload');
|
||||
window.Store.MsgKey = window.require('WAWebMsgKey');
|
||||
window.Store.NumberInfo = window.require('WAPhoneUtils');
|
||||
window.Store.OpaqueData = window.require('WAWebMediaOpaqueData');
|
||||
window.Store.QueryProduct = window.require('WAWebBizProductCatalogBridge');
|
||||
window.Store.QueryOrder = window.require('WAWebBizOrderBridge');
|
||||
window.Store.SendClear = window.require('WAWebChatClearBridge');
|
||||
window.Store.SendDelete = window.require('WAWebDeleteChatAction');
|
||||
window.Store.SendMessage = window.require('WAWebSendMsgChatAction');
|
||||
window.Store.EditMessage = window.require('WAWebSendMessageEditAction');
|
||||
window.Store.SendSeen = window.require('WAWebUpdateUnreadChatAction');
|
||||
window.Store.User = window.require('WAWebUserPrefsMeUser');
|
||||
window.Store.ContactMethods = window.require('WAWebContactGetters');
|
||||
window.Store.UploadUtils = window.require('WAWebUploadManager');
|
||||
window.Store.UserConstructor = window.require('WAWebWid');
|
||||
window.Store.Validators = window.require('WALinkify');
|
||||
window.Store.VCard = window.require('WAWebFrontendVcardUtils');
|
||||
window.Store.WidFactory = window.require('WAWebWidFactory');
|
||||
window.Store.ProfilePic = window.require('WAWebContactProfilePicThumbBridge');
|
||||
window.Store.PresenceUtils = window.require('WAWebPresenceChatAction');
|
||||
window.Store.ChatState = window.require('WAWebChatStateBridge');
|
||||
window.Store.findCommonGroups = window.require('WAWebFindCommonGroupsContactAction').findCommonGroups;
|
||||
window.Store.StatusUtils = window.require('WAWebContactStatusBridge');
|
||||
window.Store.ConversationMsgs = window.require('WAWebChatLoadMessages');
|
||||
window.Store.sendReactionToMsg = window.require('WAWebSendReactionMsgAction').sendReactionToMsg;
|
||||
window.Store.createOrUpdateReactionsModule = window.require('WAWebDBCreateOrUpdateReactions');
|
||||
window.Store.EphemeralFields = window.require('WAWebGetEphemeralFieldsMsgActionsUtils');
|
||||
window.Store.MsgActionChecks = window.require('WAWebMsgActionCapability');
|
||||
window.Store.QuotedMsg = window.require('WAWebQuotedMsgModelUtils');
|
||||
window.Store.LinkPreview = window.require('WAWebLinkPreviewChatAction');
|
||||
window.Store.Socket = window.require('WADeprecatedSendIq');
|
||||
window.Store.SocketWap = window.require('WAWap');
|
||||
window.Store.SearchContext = window.require('WAWebChatMessageSearch').getSearchContext;
|
||||
window.Store.DrawerManager = window.require('WAWebDrawerManager').DrawerManager;
|
||||
window.Store.LidUtils = window.require('WAWebApiContact');
|
||||
window.Store.WidToJid = window.require('WAWebWidToJid');
|
||||
window.Store.JidToWid = window.require('WAWebJidToWid');
|
||||
window.Store.getMsgInfo = window.require('WAWebApiMessageInfoStore').queryMsgInfo;
|
||||
window.Store.pinUnpinMsg = window.require('WAWebSendPinMessageAction').sendPinInChatMsg;
|
||||
window.Store.QueryExist = window.require('WAWebQueryExistsJob').queryWidExists;
|
||||
window.Store.ReplyUtils = window.require('WAWebMsgReply');
|
||||
window.Store.Settings = window.require('WAWebUserPrefsGeneral');
|
||||
window.Store.BotSecret = window.require('WAWebBotMessageSecret');
|
||||
window.Store.BotProfiles = window.require('WAWebBotProfileCollection');
|
||||
if (window.compareWwebVersions(window.Debug.VERSION, '>=', '2.3000.1014111620'))
|
||||
window.Store.AddonReactionTable = window.require('WAWebAddonReactionTableMode').reactionTableMode;
|
||||
|
||||
window.Store.ForwardUtils = {
|
||||
...window.require('WAWebForwardMessagesToChat')
|
||||
};
|
||||
|
||||
window.Store.StickerTools = {
|
||||
...window.require('WAWebImageUtils'),
|
||||
...window.require('WAWebAddWebpMetadata')
|
||||
};
|
||||
window.Store.GroupUtils = {
|
||||
...window.require('WAWebGroupCreateJob'),
|
||||
...window.require('WAWebGroupModifyInfoJob'),
|
||||
...window.require('WAWebExitGroupAction'),
|
||||
...window.require('WAWebContactProfilePicThumbBridge')
|
||||
};
|
||||
window.Store.GroupParticipants = {
|
||||
...window.require('WAWebModifyParticipantsGroupAction'),
|
||||
...window.require('WASmaxGroupsAddParticipantsRPC')
|
||||
};
|
||||
window.Store.GroupInvite = {
|
||||
...window.require('WAWebGroupInviteJob'),
|
||||
...window.require('WAWebGroupQueryJob')
|
||||
};
|
||||
window.Store.GroupInviteV4 = {
|
||||
...window.require('WAWebGroupInviteV4Job'),
|
||||
...window.require('WAWebChatSendMessages')
|
||||
};
|
||||
window.Store.MembershipRequestUtils = {
|
||||
...window.require('WAWebApiMembershipApprovalRequestStore'),
|
||||
...window.require('WASmaxGroupsMembershipRequestsActionRPC')
|
||||
};
|
||||
|
||||
if (!window.Store.Chat._find || !window.Store.Chat.findImpl) {
|
||||
window.Store.Chat._find = e => {
|
||||
const target = window.Store.Chat.get(e);
|
||||
return target ? Promise.resolve(target) : Promise.resolve({
|
||||
id: e
|
||||
});
|
||||
};
|
||||
window.Store.Chat.findImpl = window.Store.Chat._find;
|
||||
}
|
||||
|
||||
/**
|
||||
* Target options object description
|
||||
* @typedef {Object} TargetOptions
|
||||
* @property {string|number} module The target module
|
||||
* @property {string} function The function name to get from a module
|
||||
*/
|
||||
/**
|
||||
* Function to modify functions
|
||||
* @param {TargetOptions} target Options specifying the target function to search for modifying
|
||||
* @param {Function} callback Modified function
|
||||
*/
|
||||
window.injectToFunction = (target, callback) => {
|
||||
const module = window.require(target.module);
|
||||
const originalFunction = module[target.function];
|
||||
const modifiedFunction = (...args) => callback(originalFunction, ...args);
|
||||
module[target.function] = modifiedFunction;
|
||||
};
|
||||
|
||||
window.injectToFunction({ module: 'WAWebBackendJobsCommon', function: 'mediaTypeFromProtobuf' }, (func, ...args) => { const [proto] = args; return proto.locationMessage ? null : func(...args); });
|
||||
|
||||
window.injectToFunction({ module: 'WAWebE2EProtoUtils', function: 'typeAttributeFromProtobuf' }, (func, ...args) => { const [proto] = args; return proto.locationMessage || proto.groupInviteMessage ? 'text' : func(...args); });
|
||||
|
||||
};
|
||||
Loading…
Reference in a new issue