diff --git a/assets/preload-plugins/autoRegister.js b/assets/preload-plugins/autoRegister.js
new file mode 100644
index 00000000..bb0b903d
--- /dev/null
+++ b/assets/preload-plugins/autoRegister.js
@@ -0,0 +1,62 @@
+// Auto register guest account:
+const prefix = [
+ "mysterious",
+ "adventurous",
+ "courageous",
+ "precious",
+ "cynical",
+ "flamer ",
+ "despicable",
+ "suspicious",
+ "gorgeous",
+ "impeccable",
+ "lovely",
+ "stunning",
+ "keyed",
+ "phoned",
+ "glorious",
+ "amazing",
+ "strange",
+ "arcane"
+];
+const suffix = [
+ "Anonymous",
+ "Boy",
+ "Lurker",
+ "Keyhitter",
+ "User",
+ "Enjoyer",
+ "Hunk",
+ "Coolstar",
+ "Wrestling",
+ "TylerTheCreator",
+ "Ad",
+ "Gamer",
+ "Games",
+ "Programmer"
+];
+
+Array.prototype.random = function () {
+ return this[Math.floor(Math.random() * this.length)];
+};
+
+function _generateName() {
+ return `${prefix.random()}${suffix.random()}`;
+}
+
+var token = JSON.parse(localStorage.getItem("token"));
+if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
+ fetch(`${window.GLOBAL_ENV.API_ENDPOINT}/auth/register`, {
+ method: "POST",
+ headers: { "content-type": "application/json" },
+ body: JSON.stringify({ username: `${_generateName()}`, consent: true }) //${Date.now().toString().slice(-4)}
+ })
+ .then((x) => x.json())
+ .then((x) => {
+ localStorage.setItem("token", `"${x.token}"`);
+ if (!window.localStorage) {
+ // client already loaded -> need to reload to apply the newly registered user token
+ location.reload();
+ }
+ });
+}
diff --git a/assets/preload-plugins/fosscord-login.js b/assets/preload-plugins/fosscord-login.js
new file mode 100644
index 00000000..38f82200
--- /dev/null
+++ b/assets/preload-plugins/fosscord-login.js
@@ -0,0 +1,12 @@
+// Remove `<link id="logincss" rel="stylesheet" href="/assets/fosscord-login.css" />` from header when we're not accessing `/login` or `/register`
+// fosscord-login.css replaces discord's TOS tooltip with something more fitting for fosscord, which when included in the main app, causes other tooltips
+// to be affected, which is potentially unwanted.
+//
+// This script removes fosscord-login.css when a user reloads the page. From testing, it appears fosscord already properly removes
+// fosscord-login.css after login is successful, but not if you reload the page after logging in. This script is to remove fosscord-login.css in
+// that specific case.
+
+var token = JSON.parse(localStorage.getItem("token"));
+if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
+ document.getElementById("logincss").remove();
+}
diff --git a/assets/preload-plugins/webrtc.js b/assets/preload-plugins/webrtc.js
new file mode 100644
index 00000000..1acd443a
--- /dev/null
+++ b/assets/preload-plugins/webrtc.js
@@ -0,0 +1,74 @@
+(this.webpackChunkdiscord_app = this.webpackChunkdiscord_app || []).push([
+ [[228974]],
+ {
+ 632540: (module, exports, req) => {
+ window.find = (filter, options = {}) => {
+ const { cacheOnly = false } = options;
+ for (let i in req.c) {
+ if (req.c.hasOwnProperty(i)) {
+ let m = req.c[i].exports;
+ if (m && m.__esModule && m.default && filter(m.default)) return m.default;
+ if (m && filter(m)) return m;
+ }
+ }
+ if (cacheOnly) {
+ console.warn("Cannot find loaded module in cache");
+ return null;
+ }
+ console.warn("Cannot find loaded module in cache. Loading all modules may have unexpected side effects");
+ for (let i = 0; i < req.m.length; ++i) {
+ let m = req(i);
+ if (m && m.__esModule && m.default && filter(m.default)) return m.default;
+ if (m && filter(m)) return m;
+ }
+ console.warn("Cannot find module");
+ return null;
+ };
+ window.findByUniqueProperties = (propNames, options) =>
+ find((module) => propNames.every((prop) => module[prop] !== undefined), options);
+ window.findByDisplayName = (displayName, options) => find((module) => module.displayName === displayName, options);
+ window.req = req;
+
+ init();
+ }
+ },
+ (t) => t(632540)
+]);
+
+function retry(callback) {
+ return new Promise((resolve) => {
+ const interval = setInterval(() => {
+ const mod = callback();
+ if (!mod) return;
+
+ clearInterval(interval);
+ resolve(mod);
+ }, 50);
+ });
+}
+
+async function init() {
+ const SDP = await retry(() => findByUniqueProperties(["truncateSDP"]));
+ const StringManipulator = findByUniqueProperties(["uniq"]);
+
+ const truncateSDP = SDP.truncateSDP;
+ SDP.truncateSDP = (e) => {
+ const result = truncateSDP(e);
+ const i = result.codecs.find((x) => x.name === "VP8");
+ const a = new RegExp("^a=ice|a=extmap|opus|VP8|fingerprint|" + i?.rtxPayloadType + " rtx", "i");
+ return {
+ sdp: StringManipulator(e)
+ .split(/\r\n/)
+ .filter(function (e) {
+ return a.test(e);
+ })
+ .uniq()
+ .join("\n"),
+ codecs: result.codecs
+ };
+ };
+ // SDP.generateUnifiedSessionDescription = (e) => {
+ // console.log(e);
+ // return new RTCSessionDescription({ sdp: e.baseSDP.replace(/sendonly/g, "recvonly"), type: "answer" });
+ // };
+}
\ No newline at end of file
|