summary refs log tree commit diff
path: root/jsondata.js
diff options
context:
space:
mode:
authorWlodekM <[email protected]>2024-09-14 22:09:57 +0300
committerWlodekM <[email protected]>2024-09-14 22:09:57 +0300
commit43c5346643380756560ef7ba8c4c4d0c44c871fe (patch)
treeb844de06a069dc67b6255064c7897a1d51bc0027 /jsondata.js
parent496fdda80d4f82ddb2e233b0f0b504826d7a0f0a (diff)
wip index.js rewrite 2: electric boogaloo
Diffstat (limited to 'jsondata.js')
-rw-r--r--jsondata.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/jsondata.js b/jsondata.js
new file mode 100644
index 0000000..ff1457a
--- /dev/null
+++ b/jsondata.js
@@ -0,0 +1,64 @@
+export default function handleMessage(rawData, user) {
+    if (rawData.toString().startsWith(":jsonGet")) {
+        let params = String(rawData).split(" ");
+        params.shift();
+        switch (params[0]) {
+            case "channels":
+                socket.send(":json.channels>" + JSON.stringify(this.channels));
+                break;
+            case "users":
+                socket.send(
+                    ":json.users>" +
+                        JSON.stringify(
+                            Object.values(this.users).map((usr) => {
+                                return {
+                                    username: usr.username,
+                                    nickname: usr.nickname,
+                                    t: usr.t,
+                                    channel: user.channel,
+                                    displayName: user.name(),
+                                };
+                            })
+                        )
+                );
+                break;
+            case "usersLocal":
+                socket.send(
+                    JSON.stringify(
+                        Object.values(this.users)
+                            .filter((usr) => usr.channel == user.channel)
+                            .map((usr) => {
+                                return {
+                                    username: usr.username,
+                                    nickname: usr.nickname,
+                                    t: usr.t,
+                                    channel: user.channel,
+                                    displayName: user.name(),
+                                };
+                            })
+                    )
+                );
+                break;
+
+            default:
+                socket.send(`unknown "${params[0]}"`);
+                break;
+        }
+        return true;
+    }
+    if (rawData.toString().startsWith(":jsonSubscribe")) {
+        let params = String(rawData).split(" ");
+        params.shift();
+        switch (params[0]) {
+            case "users":
+                user.subscribedToUsers = true;
+                break;
+
+            default:
+                socket.send(`unknown "${params[0]}"`);
+                break;
+        }
+        return true;
+    }
+    return false
+}
\ No newline at end of file