From 2a3de2c38c7b77adbc2c83e0245c15dbba3b6edb Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sun, 19 Nov 2023 11:44:24 +0100 Subject: Added support for extra data in error manager. --- .../skyhanni/test/command/ErrorManager.kt | 47 ++++++++++++++++++---- 1 file changed, 40 insertions(+), 7 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/test/command') diff --git a/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt b/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt index a954f572d..277452f5a 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt @@ -47,16 +47,25 @@ object ErrorManager { } ?: "Error id not found!") } + @Deprecated("Use data as well", ReplaceWith("logErrorStateWithData()")) fun logErrorState(userMessage: String, internalMessage: String) { - logError(IllegalStateException(internalMessage), userMessage) + logError(IllegalStateException(internalMessage), userMessage, false) } - // we love java - fun logError(throwable: Throwable, message: String) { - logError(throwable, message, false) + fun logErrorStateWithData(userMessage: String, internalMessage: String, vararg extraData: Pair) { + logError(IllegalStateException(internalMessage), userMessage, false, *extraData) } - fun logError(throwable: Throwable, message: String, ignoreErrorCache: Boolean) { + fun logError(throwable: Throwable, message: String, vararg extraData: Pair) { + logError(throwable, message, false, *extraData) + } + + fun logError( + throwable: Throwable, + message: String, + ignoreErrorCache: Boolean, + vararg extraData: Pair + ) { val error = Error(message, throwable) error.printStackTrace() Minecraft.getMinecraft().thePlayer ?: return @@ -73,10 +82,12 @@ object ErrorManager { val stackTrace = throwable.getCustomStackTrace(false).joinToString("\n").removeSpam() val randomId = UUID.randomUUID().toString() + val extraDataString = buildExtraDataString(extraData) val rawMessage = message.removeColor() - errorMessages[randomId] = "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n \n$stackTrace\n```" + errorMessages[randomId] = + "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n \n$stackTrace\n$extraDataString```" fullErrorMessages[randomId] = - "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n(full stack trace)\n \n$fullStackTrace\n```" + "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n(full stack trace)\n \n$fullStackTrace\n$extraDataString```" LorenzUtils.clickableChat( "§c[SkyHanni-${SkyHanniMod.version}]: $message§c. Click here to copy the error into the clipboard.", @@ -84,6 +95,28 @@ object ErrorManager { false ) } + + private fun buildExtraDataString(extraData: Array>): String { + val extraDataString = if (extraData.isNotEmpty()) { + val builder = StringBuilder() + for ((key, value) in extraData) { + builder.append(key) + builder.append(": ") + if (value is Iterable<*>) { + builder.append("\n") + for (line in value) { + builder.append(" - '$line'") + builder.append("\n") + } + } else { + builder.append("'$value'") + } + builder.append("\n") + } + "\nExtra data:\n$builder" + } else "" + return extraDataString + } } private fun Throwable.getCustomStackTrace(full: Boolean, parent: List = emptyList()): List = buildList { -- cgit