From 29fb64c2bc7bb5ab5c0fc07c002c49c43da0f8d3 Mon Sep 17 00:00:00 2001 From: codehdn Date: Sun, 28 Apr 2024 18:39:34 -0500 Subject: [PATCH 1/3] feat: add variable $effectQueueLength to fetch effect queue length --- .../utility/get-effect-queue-length.ts | 23 +++++++++++++++++++ .../variables/builtin/utility/index.ts | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 src/backend/variables/builtin/utility/get-effect-queue-length.ts diff --git a/src/backend/variables/builtin/utility/get-effect-queue-length.ts b/src/backend/variables/builtin/utility/get-effect-queue-length.ts new file mode 100644 index 000000000..054513cfe --- /dev/null +++ b/src/backend/variables/builtin/utility/get-effect-queue-length.ts @@ -0,0 +1,23 @@ +import { ReplaceVariable } from "../../../../types/variables"; +import { OutputDataType, VariableCategory } from "../../../../shared/variable-constants"; + +import effectQueueManager from "../../../effects/queues/effect-queue-manager"; + +const model : ReplaceVariable = { + definition: { + handle: "effectQueueLength", + usage: "effectQueueLength[text]", + description: "Returns the length of an effect queue. Useful for showing queue length in a command response.", + categories: [VariableCategory.ADVANCED], + possibleDataOutput: [OutputDataType.TEXT] + }, + evaluator: async (_trigger, text = "") => { + const selectedQueue = effectQueueManager.getAllItems().find((queue) => queue.name === text); + if (selectedQueue) { + return selectedQueue.length.toString(); + } + return "Unknown"; + } +}; + +export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/utility/index.ts b/src/backend/variables/builtin/utility/index.ts index af7bf5536..2894fb083 100644 --- a/src/backend/variables/builtin/utility/index.ts +++ b/src/backend/variables/builtin/utility/index.ts @@ -9,6 +9,7 @@ import fileExists from './file-exists'; import fileLineCount from './file-line-count'; import fileRead from './file-read'; import filesInDirectory from './files-in-directory'; +import getEffectQueueLength from "./get-effect-queue-length" import loopCount from './loop-count'; import loopItem from './loop-item'; import quickstore from './quick-store'; @@ -27,6 +28,7 @@ export default [ fileLineCount, fileRead, filesInDirectory, + getEffectQueueLength, loopCount, loopItem, quickstore, From e60e5460f5b8dc890699c98393cf234a75a43af2 Mon Sep 17 00:00:00 2001 From: codehdn Date: Sun, 28 Apr 2024 18:49:13 -0500 Subject: [PATCH 2/3] refactor: updating placeholder from text to queueName for easier user understanding --- .../variables/builtin/utility/get-effect-queue-length.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/variables/builtin/utility/get-effect-queue-length.ts b/src/backend/variables/builtin/utility/get-effect-queue-length.ts index 054513cfe..432c8e383 100644 --- a/src/backend/variables/builtin/utility/get-effect-queue-length.ts +++ b/src/backend/variables/builtin/utility/get-effect-queue-length.ts @@ -6,7 +6,7 @@ import effectQueueManager from "../../../effects/queues/effect-queue-manager"; const model : ReplaceVariable = { definition: { handle: "effectQueueLength", - usage: "effectQueueLength[text]", + usage: "effectQueueLength[queueName]", description: "Returns the length of an effect queue. Useful for showing queue length in a command response.", categories: [VariableCategory.ADVANCED], possibleDataOutput: [OutputDataType.TEXT] From f17dc836fa6267a8f0c8c23dd89b001a0c4075c3 Mon Sep 17 00:00:00 2001 From: codehdn Date: Wed, 1 May 2024 23:43:35 -0500 Subject: [PATCH 3/3] feat: add support for effect queue length to be passed back to express api on getItem call --- src/backend/effects/queues/effect-queue-manager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/effects/queues/effect-queue-manager.js b/src/backend/effects/queues/effect-queue-manager.js index 3bb2fa8e9..f596da276 100644 --- a/src/backend/effects/queues/effect-queue-manager.js +++ b/src/backend/effects/queues/effect-queue-manager.js @@ -101,7 +101,7 @@ class EffectQueueManager extends JsonDbManager { } item.queue = effectQueueRunner.getQueue(itemId); - + item.length = item.queue.length; return item; }