summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2024-03-22 18:16:49 +0100
committerGitHub <noreply@github.com>2024-03-22 18:16:49 +0100
commita8138b0aa20d2b2fd266b1352eaf075999365bb6 (patch)
treea9c15556e699c00869bae2fe811e309727b204c8 /src/main/java/at/hannibal2/skyhanni/data
parent788adb59f20e01c83f4e030fa077a70275c00074 (diff)
downloadskyhanni-a8138b0aa20d2b2fd266b1352eaf075999365bb6.tar.gz
skyhanni-a8138b0aa20d2b2fd266b1352eaf075999365bb6.tar.bz2
skyhanni-a8138b0aa20d2b2fd266b1352eaf075999365bb6.zip
Backend: ChatClickActionManager (#1128)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Co-authored-by: Cal <cwolfson58@gmail.com> Co-authored-by: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt36
1 files changed, 36 insertions, 0 deletions
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<ClickableAction>()
+
+ 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<String>) {
+ 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)
+}