summary refs log tree commit diff
path: root/assets/client_test/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'assets/client_test/index.html')
-rw-r--r--assets/client_test/index.html75
1 files changed, 74 insertions, 1 deletions
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>