diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/data/ChatClickActionManager.kt | 17 |
1 files changed, 14 insertions, 3 deletions
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<ClickableAction>() - 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() + ) } |
