From cc9693ebd7f0cf3e36b82c01c8c4e0ee737abe0f Mon Sep 17 00:00:00 2001 From: Rainnny7 Date: Mon, 9 Sep 2024 20:48:48 -0400 Subject: [PATCH] more logic --- JS-SDK/package.json | 2 +- JS-SDK/src/hook/websocket.ts | 15 ++++++++++++--- JS-SDK/src/types/socket.ts | 9 +++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/JS-SDK/package.json b/JS-SDK/package.json index 551e88d..0872401 100644 --- a/JS-SDK/package.json +++ b/JS-SDK/package.json @@ -1,6 +1,6 @@ { "name": "usetether", - "version": "1.1.6", + "version": "1.1.7", "author": "Braydon (Rainnny) ", "description": "An API designed to provide real-time access to a user's Discord data.", "keywords": [ diff --git a/JS-SDK/src/hook/websocket.ts b/JS-SDK/src/hook/websocket.ts index 82bc535..417bbba 100644 --- a/JS-SDK/src/hook/websocket.ts +++ b/JS-SDK/src/hook/websocket.ts @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { Snowflake } from "@/types/snowflake"; import { TetherConfig } from "@/types/config"; import { DiscordUser } from "@/types/user"; +import { SocketPacket, UserStatusPacket } from "@/types/socket"; export const useTetherWS = ( snowflake: Snowflake, @@ -11,7 +12,7 @@ export const useTetherWS = ( } ): DiscordUser | undefined => { const url: string = `ws${secure && "s"}://${endpoint}/gateway`; - const [user] = useState(); + const [user, setUser] = useState(); useEffect(() => { // Prevent from running on the server @@ -26,8 +27,10 @@ export const useTetherWS = ( const connect = () => { console.log("[Tether] Connecting to the WebSocket server..."); socket = new WebSocket(url); // Connect to the gateway + + // Track the user when the WS connects socket.addEventListener("open", () => { - socket.send(JSON.stringify({ op: 0, snowflake: snowflake })); // Track the user + socket.send(JSON.stringify({ op: 0, snowflake: snowflake })); console.log( "[Tether] WebSocket connection established!", snowflake @@ -36,7 +39,13 @@ export const useTetherWS = ( socket.addEventListener("close", connect); // Reconnect on close socket.addEventListener("message", (event) => { - console.log("data:", event.data); + const packet: SocketPacket = JSON.parse( + event.data + ) as SocketPacket; + if (packet.op === 1) { + setUser((packet as UserStatusPacket).user); + console.log("user status update", user); + } }); }; connect(); diff --git a/JS-SDK/src/types/socket.ts b/JS-SDK/src/types/socket.ts index 1e49ad6..f289120 100644 --- a/JS-SDK/src/types/socket.ts +++ b/JS-SDK/src/types/socket.ts @@ -1,6 +1,15 @@ +import { DiscordUser } from "@/types/user"; + export type SocketPacket = { /** * The OP code for this packet. */ op: number; }; + +export type UserStatusPacket = SocketPacket & { + /** + * The user the status is for. + */ + user: DiscordUser; +};