diff --git a/assets/client_test/index.html b/assets/client_test/index.html
index 7306db60..31be10f1 100644
--- a/assets/client_test/index.html
+++ b/assets/client_test/index.html
@@ -46,7 +46,80 @@
</script>
<!-- fast connect -->
- <script>!function () { if (null != window.WebSocket) { if (function (n) { try { var e = localStorage.getItem(n); return null == e ? null : JSON.parse(e); } catch (n) { return null; } }("token") && !window.__OVERLAY__) { var n = null != window.DiscordNative || null != window.require ? "etf" : "json", e = window.GLOBAL_ENV.GATEWAY_ENDPOINT + "/?encoding=" + n + "&v=" + window.GLOBAL_ENV.API_VERSION + "&compress=zlib-stream"; console.log("[FAST CONNECT] connecting to: " + e); var o = new WebSocket(e); o.binaryType = "arraybuffer"; var t = Date.now(), i = { open: !1, identify: !1, gateway: e, messages: [] }; o.onopen = function () { console.log("[FAST CONNECT] connected in " + (Date.now() - t) + "ms"), i.open = !0; }, o.onclose = o.onerror = function () { window._ws = null; }, o.onmessage = function (n) { i.messages.push(n); }, window._ws = { ws: o, state: i }; } } }();</script>
+ <!-- <script>!function () { if (null != window.WebSocket) { if (function (n) { try { var e = localStorage.getItem(n); return null == e ? null : JSON.parse(e); } catch (n) { return null; } }("token") && !window.__OVERLAY__) { var n = null != window.DiscordNative || null != window.require ? "etf" : "json", e = window.GLOBAL_ENV.GATEWAY_ENDPOINT + "/?encoding=" + n + "&v=" + window.GLOBAL_ENV.API_VERSION + "&compress=zlib-stream"; console.log("[FAST CONNECT] connecting to: " + e); var o = new WebSocket(e); o.binaryType = "arraybuffer"; var t = Date.now(), i = { open: !1, identify: !1, gateway: e, messages: [] }; o.onopen = function () { console.log("[FAST CONNECT] connected in " + (Date.now() - t) + "ms"), i.open = !0; }, o.onclose = o.onerror = function () { window._ws = null; }, o.onmessage = function (n) { i.messages.push(n); }, window._ws = { ws: o, state: i }; } } }();</script> -->
+
+ <!-- fast identify -->
+ <script>
+ (() => {
+ if (window.WebSocket == null) return;
+ if (window.__OVERLAY__) return;
+
+ const getStorage = (key) => {
+ try {
+ return JSON.parse(localStorage.getItem(key));
+ }
+ catch (e) {
+ return undefined;
+ }
+ };
+
+ const token = getStorage("token");
+ if (!token) return;
+
+ const encoding = window.DiscordNative != null || window.require != null ? "etf" : "json";
+ const url = window.GLOBAL_ENV.GATEWAY_ENDPOINT +
+ "/?encoding=" +
+ encoding +
+ "&v=" +
+ window.GLOBAL_ENV.API_VERSION +
+ "&compress=zlib-stream";
+
+ console.log("[FAST IDENTIFY] connecting to:", url);
+
+ const socket = new WebSocket(url);
+ socket.binaryType = "arraybuffer";
+ const start = Date.now();
+ const state = { open: false, identity: false, gateway: url, messages: [] };
+
+ socket.onopen = function () {
+ console.log(`[FAST IDENTIFY] connected in ${Date.now() - start}ms`);
+ state.open = true;
+
+ console.log("[FAST IDENTIFY] Sending payload");
+ state.identity = true;
+ const payload = {
+ op: 2,
+ d: {
+ token: token,
+ capabilities: 509,
+ properties: {
+ ...(getStorage("deviceProperties") || {}),
+ browser_user_agent: navigator.userAgent,
+ },
+ compress: false,
+ presence: {
+ status: getStorage("UserSettingsStore")?.status || "online",
+ since: 0,
+ activities: [],
+ afk: false,
+ },
+ }
+ };
+ socket.send(JSON.stringify(payload));
+ };
+
+ socket.onclose = socket.onerror = (e) => {
+ console.log("[FAST IDENTIFY] Failed", e);
+ window._ws = null;
+ };
+
+ socket.onmessage = (message) => {
+ state.messages.push(message);
+ };
+
+ window._ws = { ws: socket, state };
+ })();
+ </script>
<!-- preload plugin marker -->
</head>
diff --git a/scripts/client.js b/scripts/client.js
index b31f2fcc..b42217a0 100644
--- a/scripts/client.js
+++ b/scripts/client.js
@@ -119,6 +119,12 @@ const doPatch = (content) => {
"console.log('Prevented deletion of localStorage')"
);
+ // fast identify
+ content = content.replaceAll(
+ "e.isFastConnect=t;t?e._doFastConnectIdentify():e._doResumeOrIdentify()",
+ "e.isFastConnect=t; if (t !== undefined) e._doResumeOrIdentify();"
+ );
+
return content;
};
|