From ce6ac8a93b4ac64d2ecc150a42aba522615c4138 Mon Sep 17 00:00:00 2001 From: Eldritch-Oliver Date: Wed, 5 Nov 2025 22:41:53 -0700 Subject: [PATCH] Add foundations for the data request sockets --- langs/en-ca.json | 7 +++++++ module/hooks/init.mjs | 2 ++ module/sockets/_index.mjs | 34 ++++++++++++++++++++++++++++++++ module/sockets/cancelRequest.mjs | 1 + module/sockets/createNotif.mjs | 1 + module/sockets/dataRequest.mjs | 1 + module/sockets/submitRequest.mjs | 1 + system.json | 1 + 8 files changed, 48 insertions(+) create mode 100644 module/sockets/_index.mjs create mode 100644 module/sockets/cancelRequest.mjs create mode 100644 module/sockets/createNotif.mjs create mode 100644 module/sockets/dataRequest.mjs create mode 100644 module/sockets/submitRequest.mjs diff --git a/langs/en-ca.json b/langs/en-ca.json index de83d02..425e065 100644 --- a/langs/en-ca.json +++ b/langs/en-ca.json @@ -31,6 +31,13 @@ "system": "Text-Based Actors" } } + }, + "notifs": { + "error": { + "invalid-socket": "Invalid socket data received, this means a module or system bug is present.", + "unknown-socket-event": "An unknown socket event was received: {event}", + "malformed-socket-payload": "Socket event \"{event}\" received with malformed payload. Details: {details}" + } } } } diff --git a/module/hooks/init.mjs b/module/hooks/init.mjs index ecf09b9..f3db2fb 100644 --- a/module/hooks/init.mjs +++ b/module/hooks/init.mjs @@ -17,6 +17,7 @@ import { __ID__ } from "../consts.mjs"; import helpers from "../handlebarsHelpers/_index.mjs"; import { Logger } from "../utils/Logger.mjs"; import { registerCustomComponents } from "../apps/elements/_index.mjs"; +import { registerSockets } from "../sockets/_index.mjs"; Hooks.on(`init`, () => { Logger.debug(`Initializing`); @@ -41,6 +42,7 @@ Hooks.on(`init`, () => { registerWorldSettings(); + registerSockets(); registerCustomComponents(); Handlebars.registerHelper(helpers); }); diff --git a/module/sockets/_index.mjs b/module/sockets/_index.mjs new file mode 100644 index 0000000..1f34107 --- /dev/null +++ b/module/sockets/_index.mjs @@ -0,0 +1,34 @@ +import { cancelRequest } from "./cancelRequest.mjs"; +import { createNotif } from "./createNotif.mjs"; +import { dataRequest } from "./dataRequest.mjs"; +import { localizer } from "../utils/Localizer.mjs"; +import { Logger } from "../utils/Logger.mjs"; +import { submitRequest } from "./submitRequest.mjs"; + +const events = { + // Data Request sockets + cancelRequest, + createNotif, + dataRequest, + submitRequest, +}; + +export function registerSockets() { + Logger.info(`Setting up socket listener`); + + game.socket.on(`system.taf`, (data, userID) => { + const { event, payload } = data ?? {}; + if (event == null || payload === undefined) { + ui.notifications.error(localizer(`taf.notifs.error.invalid-socket`)); + return; + }; + + if (events[event] == null) { + ui.notifications.error(localizer(`taf.notifs.error.unknown-socket-event`, { event })); + return; + }; + + const user = game.users.get(userID); + events[event](payload, user); + }); +}; diff --git a/module/sockets/cancelRequest.mjs b/module/sockets/cancelRequest.mjs new file mode 100644 index 0000000..865071a --- /dev/null +++ b/module/sockets/cancelRequest.mjs @@ -0,0 +1 @@ +export function cancelRequest() {}; diff --git a/module/sockets/createNotif.mjs b/module/sockets/createNotif.mjs new file mode 100644 index 0000000..55b72a1 --- /dev/null +++ b/module/sockets/createNotif.mjs @@ -0,0 +1 @@ +export function createNotif() {}; diff --git a/module/sockets/dataRequest.mjs b/module/sockets/dataRequest.mjs new file mode 100644 index 0000000..e75521f --- /dev/null +++ b/module/sockets/dataRequest.mjs @@ -0,0 +1 @@ +export function dataRequest() {}; diff --git a/module/sockets/submitRequest.mjs b/module/sockets/submitRequest.mjs new file mode 100644 index 0000000..44ebf1d --- /dev/null +++ b/module/sockets/submitRequest.mjs @@ -0,0 +1 @@ +export function submitRequest() {}; diff --git a/system.json b/system.json index 1aaa3a5..2283284 100644 --- a/system.json +++ b/system.json @@ -41,6 +41,7 @@ }, "Item": {} }, + "socket": true, "flags": { "hotReload": { "extensions": ["css", "hbs", "json", "js", "mjs", "svg"],