From eaf4847125b04a6f80e8b8d4be1b57dc979910af Mon Sep 17 00:00:00 2001 From: skarab42 Date: Sun, 25 Jul 2021 16:27:48 +0200 Subject: [PATCH] feat: random action (#269) --- app/server/libs/twitch/pushActions.js | 13 ++++++++++++- app/static/locales/en/app.json | 3 ++- app/static/locales/es/app.json | 3 ++- app/static/locales/fr/app.json | 3 ++- .../Panels/Panel/Widget/Edit/Action.svelte | 10 ++++++++++ .../Panels/Panel/Widget/Edit/ActionEvent.svelte | 2 -- 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/server/libs/twitch/pushActions.js b/app/server/libs/twitch/pushActions.js index ecfe87a..91d080e 100644 --- a/app/server/libs/twitch/pushActions.js +++ b/app/server/libs/twitch/pushActions.js @@ -49,6 +49,8 @@ function getValidEvents(widget, eventName) { module.exports = function pushActions(eventName, eventProps) { logger.debug("pushActions", { eventName, eventProps }); + const randomActions = []; + stores.panels.get("panels").forEach(({ widgets }) => { widgets.forEach((widget) => { if (!widget.component) return; @@ -63,8 +65,17 @@ module.exports = function pushActions(eventName, eventProps) { if (isInvalidShortcut(event, eventProps)) return; if (isInvalidRules(event, eventProps)) return; - push({ type, widget, event, eventProps }); + if (widget.random) { + randomActions.push({ type, widget, event, eventProps }); + } else { + push({ type, widget, event, eventProps }); + } }); }); }); + + if (randomActions.length) { + const random = Math.floor(Math.random() * randomActions.length); + push(randomActions[random]); + } }; diff --git a/app/static/locales/en/app.json b/app/static/locales/en/app.json index 51aeaa2..ef09247 100644 --- a/app/static/locales/en/app.json +++ b/app/static/locales/en/app.json @@ -166,7 +166,8 @@ "source": "source", "test": "test", "port": "port", - "password": "password" + "password": "password", + "random": "random" }, "obs": { "scene-list": "OBS | Scene list", diff --git a/app/static/locales/es/app.json b/app/static/locales/es/app.json index fd70185..19d83f0 100644 --- a/app/static/locales/es/app.json +++ b/app/static/locales/es/app.json @@ -165,7 +165,8 @@ "source": "fuente", "test": "test", "port": "puerto", - "password": "contraseña" + "password": "contraseña", + "random": "al azar" }, "obs": { "scene-list": "OBS | Lista de escenas", diff --git a/app/static/locales/fr/app.json b/app/static/locales/fr/app.json index 88bcdec..31cc2ef 100644 --- a/app/static/locales/fr/app.json +++ b/app/static/locales/fr/app.json @@ -166,7 +166,8 @@ "source": "source", "test": "test", "port": "port", - "password": "mot de passe" + "password": "mot de passe", + "random": "aléatoire" }, "obs": { "scene-list": "OBS | Liste des scènes", diff --git a/front-src/client/components/Panels/Panel/Widget/Edit/Action.svelte b/front-src/client/components/Panels/Panel/Widget/Edit/Action.svelte index 39bc3f3..2b92fdb 100644 --- a/front-src/client/components/Panels/Panel/Widget/Edit/Action.svelte +++ b/front-src/client/components/Panels/Panel/Widget/Edit/Action.svelte @@ -14,6 +14,7 @@ import Button from "@/components/UI/Button.svelte"; import Select from "@/components/UI/Select.svelte"; import { findSpaceForWidget } from "@/stores/panels"; + import Checkbox from "@/components/UI/Checkbox.svelte"; import MdDelete from "svelte-icons/md/MdDeleteForever.svelte"; import ConfirmModal from "@/components/UI/ConfirmModal.svelte"; @@ -97,6 +98,10 @@ function onRemoveAction() { removeActionModal = true; } + + function onCheckboxChange({ target }) { + change("random", target.checked); + } {#if component} @@ -113,6 +118,11 @@ label="{_('words.trigger')}" on:change="{onTriggerChange}" /> + {/if} {#if config.hasEvent}