Add arrpc bridge_mod
This is a very bad way to do it, but why not still need ARRPC to be running.
This commit is contained in:
parent
e447206082
commit
38c2b92e2d
3 changed files with 69 additions and 0 deletions
65
assets/bridge_mod.js
Normal file
65
assets/bridge_mod.js
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
setTimeout(e => {
|
||||||
|
let Dispatcher, lookupAsset, lookupApp, apps = {};
|
||||||
|
|
||||||
|
const ws = new WebSocket('ws://127.0.0.1:1337'); // connect to arRPC bridge websocket
|
||||||
|
ws.onmessage = async x => {
|
||||||
|
msg = JSON.parse(x.data);
|
||||||
|
console.log(msg);
|
||||||
|
|
||||||
|
if (!Dispatcher) {
|
||||||
|
const wpRequire = window.webpackChunkdiscord_app.push([[Symbol()], {}, x => x]);
|
||||||
|
const cache = wpRequire.c;
|
||||||
|
window.webpackChunkdiscord_app.pop();
|
||||||
|
|
||||||
|
for (const id in cache) {
|
||||||
|
let mod = cache[id].exports;
|
||||||
|
mod = mod && (mod.Z ?? mod.ZP);
|
||||||
|
|
||||||
|
if (mod && mod.register && mod.wait) {
|
||||||
|
Dispatcher = mod;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const factories = wpRequire.m;
|
||||||
|
for (const id in factories) {
|
||||||
|
if (factories[id].toString().includes('getAssetImage: size must === [number, number] for Twitch')) {
|
||||||
|
const mod = wpRequire(id);
|
||||||
|
|
||||||
|
const _lookupAsset = Object.values(mod).find(e => typeof e === "function" && e.toString().includes("apply("));
|
||||||
|
lookupAsset = async (appId, name) => (await _lookupAsset(appId, [name, undefined]))[0];
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const id in factories) {
|
||||||
|
if (factories[id].toString().includes(`e.application={`)) {
|
||||||
|
const mod = wpRequire(id);
|
||||||
|
|
||||||
|
const _lookupApp = Object.values(mod).find(e => typeof e === "function" && e.toString().includes(`e.application={`));
|
||||||
|
lookupApp = async appId => {
|
||||||
|
let socket = {};
|
||||||
|
await _lookupApp(socket, appId);
|
||||||
|
return socket.application;
|
||||||
|
};
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.activity?.assets?.large_image) msg.activity.assets.large_image = await lookupAsset(msg.activity.application_id, msg.activity.assets.large_image);
|
||||||
|
if (msg.activity?.assets?.small_image) msg.activity.assets.small_image = await lookupAsset(msg.activity.application_id, msg.activity.assets.small_image);
|
||||||
|
|
||||||
|
if (msg.activity) {
|
||||||
|
const appId = msg.activity.application_id;
|
||||||
|
if (!apps[appId]) apps[appId] = await lookupApp(appId);
|
||||||
|
|
||||||
|
const app = apps[appId];
|
||||||
|
if (!msg.activity.name) msg.activity.name = app.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...msg }); // set RPC status
|
||||||
|
};
|
||||||
|
}, 10000)
|
|
@ -2,6 +2,7 @@
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource>
|
<qresource>
|
||||||
<file>assets/userscript.js</file>
|
<file>assets/userscript.js</file>
|
||||||
|
<file>assets/bridge_mod.js</file>
|
||||||
<file>assets/de.shorsh.discord-screenaudio.png</file>
|
<file>assets/de.shorsh.discord-screenaudio.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
|
@ -35,6 +35,9 @@ DiscordPage::DiscordPage(QWidget *parent) : QWebEnginePage(parent) {
|
||||||
|
|
||||||
injectFile(&DiscordPage::injectScript, "userscript.js",
|
injectFile(&DiscordPage::injectScript, "userscript.js",
|
||||||
":/assets/userscript.js");
|
":/assets/userscript.js");
|
||||||
|
|
||||||
|
injectFile(&DiscordPage::injectScript, "bridge_mod.js",
|
||||||
|
":/assets/bridge_mod.js");
|
||||||
|
|
||||||
setupUserStyles();
|
setupUserStyles();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue