mirror of
https://github.com/smartfrigde/armcord.git
synced 2024-08-14 23:56:58 +00:00
49 lines
No EOL
1.4 KiB
JavaScript
49 lines
No EOL
1.4 KiB
JavaScript
const inject = async () => {
|
|
console.log('[GooseMod for Web] Injecting...');
|
|
|
|
// Re-define localStorage as Discord removes it
|
|
function getLocalStoragePropertyDescriptor() {
|
|
const frame = document.createElement('frame');
|
|
frame.src = 'about:blank';
|
|
|
|
document.body.appendChild(frame);
|
|
|
|
let r = Object.getOwnPropertyDescriptor(frame.contentWindow, 'localStorage');
|
|
|
|
frame.remove();
|
|
|
|
return r;
|
|
}
|
|
|
|
Object.defineProperty(window, 'localStorage', getLocalStoragePropertyDescriptor());
|
|
|
|
console.log('[GooseMod for Web] Redefined localStorage');
|
|
|
|
const branchURLs = {
|
|
'release': 'https://api.goosemod.com/inject.js',
|
|
'dev': 'https://updates.goosemod.com/guapi/goosemod/dev'
|
|
};
|
|
|
|
const branch = localStorage.getItem('goosemodUntetheredBranch') || 'release';
|
|
|
|
console.log('[GooseMod for Web] Branch =', branch);
|
|
console.log('[GooseMod for Web] JS Url =', branchURLs[branch]);
|
|
|
|
const js = await (await fetch(branchURLs[branch])).text(); // JSON.parse(localStorage.getItem('goosemodCoreJSCache'));
|
|
|
|
const el = document.createElement('script');
|
|
|
|
el.appendChild(document.createTextNode(js));
|
|
|
|
document.body.appendChild(el);
|
|
|
|
console.log('[GooseMod for Web] Injected fetched JS');
|
|
};
|
|
|
|
// Delay actual injection to fix FF issues
|
|
|
|
let el = document.createElement('script');
|
|
|
|
el.appendChild(document.createTextNode(`(${inject.toString()})()`));
|
|
|
|
document.body.appendChild(el); |