10/11/2025, 9:48:28 PM
当前为
// ==UserScript==
// @name Fix bullshit upload timeout in Matrix Element
// @namespace Violentmonkey Scripts
// @match *://app.element.io/*
// @match *://app.schildi.chat/*
// @match *://chat.das-labor.org/*
// @match *://element.envs.net/*
// @match *://matrix.dropnet.ch/*
// @match *://element.gnulinux.club/*
// @match *://element.nope.chat/*
// @match *://chat.bark.lgbt/*
// @match *://chat.socialnetwork24.com/*
// @match *://chat.tchncs.de/*
// @match *://element.hot-chilli.im/*
// @match *://chat.pub.solar/*
// @match *://matrix.glasgow.social/*
// @match *://matrix.furryrefuge.com/*
// @match *://element.catgirl.cloud/*
// @match *://element.private.coffee/*
// @match *://element.tedomum.fr/*
// @match *://app.nitro.chat/*
// @match *://element.arcticfoxes.net/*
// @match *://chat.archaeo.social/*
// @match *://element.fachschaften.org/*
// @match *://*/*
// @grant none
// @version 1.0.2
// @author ainofeet
// @description 10/11/2025, 9:48:28 PM
// @license GPLv2
// ==/UserScript==
(function() {
let initRetries = 0;
window.initJob = 0;
let patchFn = function() {
if (initRetries > 30) clearInterval(window.initJob);
if(!window.matrixChat?.stores?.client?.http?.uploadContent) { initRetries++; return; };
window.origUploadContent = matrixChat.stores.client.http.uploadContent;
window.origDateNow = Date.now;
window.newTimeout = 3000000;
window.matrixChat.stores.client.http.uploadContent = new Proxy(
window.matrixChat.stores.client.http.uploadContent, {
apply(thisArg, ...args) {
Date.now = window.origDateNow === Date.now ? () => {
let stack = new Error().stack.toString().split(/\n +at /);
let applyOffset = (stack[3]?.includes(".uploadContent") &&
stack[7]?.includes(".sendContentToRoom")) || stack?.some((
i) => i.includes(".upload.onprogress"));
const actualNow = window.origDateNow();
const hardcodedShit = 30000;
const offset = window.newTimeout - hardcodedShit;
const patchedNow = actualNow + offset;
if(window.debugPatch && applyOffset) console.trace(
"Applying patched Date.now");
return applyOffset ? patchedNow : actualNow;
} : Date.now;
return thisArg.apply(...args);
}
});
};
window.initJob = setInterval(patchFn, 1000);
})();