Skip to content

Commit

Permalink
fix: filter Module
Browse files Browse the repository at this point in the history
  • Loading branch information
jonalan7 committed Jul 21, 2022
1 parent b9f9f2f commit 52207b8
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 50 deletions.
51 changes: 26 additions & 25 deletions src/webpack/assets/functions/help/add-chat-wapi.js
@@ -1,34 +1,35 @@
function getChat(modules) {
for (let idx in modules) {
if (typeof modules[idx] === 'object' && modules[idx] !== null) {
const module = modules[idx];
const evet =
module.default && module.default.Chat && module.default.Msg
? module.default.Chat
: null;

if (evet) {
Store['Chat'] = evet;
if (Store && Store.BusinessProfile) {
Store.Chat._findAndParse = Store.BusinessProfile._findAndParse;
Store.Chat._find = Store.BusinessProfile._find;
}
}
}
}
}
import {
filterObjects
} from "./filter-object";
import {
injectConfig,
filterModule
} from "../../help";

export async function addChatWapi() {
const parasite = `chat${Date.now()}`;
window['webpackChunkwhatsapp_web_client'].push([
[parasite],
window[injectConfig.webpack].push([
[injectConfig.parasite],
{},
function (o) {
async function (o) {
let modules = [];
for (let idx in o.m) {
modules.push(o(idx));
}
getChat(modules);

const filterMod = await filterModule(filterObjects, modules);

filterMod.forEach((needObj) => {
if (needObj.yesModule) {
if (!window.Store[needObj.type]) {
window.Store[needObj.type] = needObj.yesModule;
}
}
});

if (Store && Store.BusinessProfile) {
Store.Chat._findAndParse = Store.BusinessProfile._findAndParse;
Store.Chat._find = Store.BusinessProfile._find;
}
},
]);
}
}
11 changes: 11 additions & 0 deletions src/webpack/assets/functions/help/filter-object.js
@@ -0,0 +1,11 @@
export const filterObjects = [{
type: 'Chat',
when: (module) =>
module.default && module.default.Chat && module.default.Msg ?
module.default.Chat : null
},
{
type: 'MaybeMeUser',
when: (module) => (module.getMaybeMeUser ? module : null),
},
];
20 changes: 20 additions & 0 deletions src/webpack/assets/help/filter-module.js
@@ -0,0 +1,20 @@
export async function filterModule(filterObjects, modules) {
let found = 0;
for (let i in modules) {
if (typeof modules[i] === 'object' && modules[i] !== null) {
filterObjects.forEach((needObj) => {
if (!needObj.when | needObj.yesModule) return;

const checkObj = needObj.when(modules[i]);
if (checkObj !== null) {
found++;
needObj.yesModule = checkObj;
}
});
if (found == filterObjects.length) {
break;
}
}
}
return filterObjects;
}
9 changes: 5 additions & 4 deletions src/webpack/assets/help/filter-object.js
Expand Up @@ -39,10 +39,6 @@ export const filterObjects = [{
module.default.toString().includes('MsgKey error: obj is null/undefined') ?
module.default : null,
},
{
type: 'MaybeMeUser',
when: (module) => (module.getMaybeMeUser ? module : null),
},
{
type: 'State',
when: (module) => (module.Socket ? module : null),
Expand Down Expand Up @@ -110,4 +106,9 @@ export const filterObjects = [{
module.addParticipants && module.promoteCommunityParticipants ?
module : null,
},
{
type: 'MyStatus',
when: (module) =>
module.getStatus && module.setMyStatus ? module : null,
}
];
1 change: 1 addition & 0 deletions src/webpack/assets/help/index.js
Expand Up @@ -6,6 +6,7 @@ export { generateMediaKey } from './generate-media-key';
export { arrayBufferToBase64 } from './array-buffer-to-base64';
export { getFileHash } from './get-file-hash';
export { encryptAndUploadFile } from './encrypt-and-upload-file';
export { filterModule } from './filter-module';

export { injectConfig } from './inject-config';
export { filterObjects } from './filter-object';
Expand Down
29 changes: 8 additions & 21 deletions src/webpack/assets/help/inject-paresite.js
@@ -1,6 +1,7 @@
import {
injectConfig,
filterObjects
filterObjects,
filterModule
} from "./index";
export const injectParasiteSnake = async () => {
window[injectConfig.webpack].push([
Expand All @@ -12,33 +13,19 @@ export const injectParasiteSnake = async () => {
modules[mod] = e(mod);
});

let found = 0;
for (let i in modules) {
if (typeof modules[i] === 'object' && modules[i] !== null) {
filterObjects.forEach((needObj) => {
if (!needObj.when | needObj.yesModule) return;
const filterMod = await filterModule(filterObjects, modules);

const checkObj = needObj.when(modules[i]);
if (checkObj !== null) {
found++;
needObj.yesModule = checkObj;
}
});
if (found == filterObjects.length) {
break;
}
}
}

filterObjects.forEach((needObj) => {
filterMod.forEach((needObj) => {
if (needObj.yesModule) {
if (needObj.type !== "Module") {
window.Store[needObj.type] = needObj.yesModule;
if (!window.Store[needObj.type]) {
window.Store[needObj.type] = needObj.yesModule;
}
}
}
});

const module = (filterObjects.filter((e) => e.type === "Module"))[0].yesModule;
const module = (filterMod.filter((e) => e.type === "Module"))[0].yesModule;
Object.keys(module).forEach((key) => {
if (!['Chat'].includes(key)) {
if (window.Store[key]) {
Expand Down

0 comments on commit 52207b8

Please sign in to comment.