From a8138b0aa20d2b2fd266b1352eaf075999365bb6 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:16:49 +0100 Subject: Backend: ChatClickActionManager (#1128) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Co-authored-by: Cal Co-authored-by: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> --- .../skyhanni/data/ChatClickActionManager.kt | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt b/src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt new file mode 100644 index 000000000..2f283fe01 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt @@ -0,0 +1,36 @@ +package at.hannibal2.skyhanni.data + +import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.StringUtils + +object ChatClickActionManager { + + private val actions = mutableListOf() + + fun oneTimeClick(message: String, onClick: () -> Any) { + val action = ClickableAction(StringUtils.generateRandomId(), message, onClick) + actions.add(action) + action.sendToChat() + } + + private fun ClickableAction.sendToChat() { + ChatUtils.clickableChat(message, "shaction $token") + } + + fun onCommand(args: Array) { + if (args.size == 1) { + getActionByToken(args[0])?.runAction() + } + } + + private fun ClickableAction.runAction() { + onClick() + if (oneTime) { + actions.remove(this) + } + } + + private fun getActionByToken(token: String) = actions.find { it.token == token } + + class ClickableAction(val token: String, val message: String, val onClick: () -> Any, val oneTime: Boolean = true) +} -- cgit