From 66b98b62ec0ef0aa56d47af48131d661d43de579 Mon Sep 17 00:00:00 2001 From: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> Date: Tue, 16 Apr 2024 02:34:51 +1000 Subject: Improvement: Code cleanup, bug fix and new functions (#1445) --- .../hannibal2/skyhanni/data/ChatClickActionManager.kt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (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 index 2dac5bf4a..3dc03c5f9 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt @@ -1,14 +1,15 @@ package at.hannibal2.skyhanni.data import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.SimpleTimeMark 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) + fun oneTimeClick(message: String, onClick: () -> Any, expiresAt: SimpleTimeMark) { + val action = ClickableAction(StringUtils.generateRandomId(), message, onClick, expiresAt = expiresAt) actions.add(action) action.sendToChat() } @@ -24,6 +25,10 @@ object ChatClickActionManager { } private fun ClickableAction.runAction() { + if (expiresAt.isInPast()) { + actions.remove(this) + return + } onClick() if (oneTime) { actions.remove(this) @@ -32,5 +37,11 @@ object ChatClickActionManager { 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) + class ClickableAction( + val token: String, + val message: String, + val onClick: () -> Any, + val oneTime: Boolean = true, + val expiresAt: SimpleTimeMark = SimpleTimeMark.farFuture() + ) } -- cgit