diff options
| author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2024-03-22 18:16:49 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-22 18:16:49 +0100 |
| commit | a8138b0aa20d2b2fd266b1352eaf075999365bb6 (patch) | |
| tree | a9c15556e699c00869bae2fe811e309727b204c8 /src/main/java/at/hannibal2/skyhanni/data | |
| parent | 788adb59f20e01c83f4e030fa077a70275c00074 (diff) | |
| download | skyhanni-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.kt | 36 |
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) +} |
