diff options
author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2024-10-06 22:48:31 +0200 |
---|---|---|
committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2024-10-06 22:48:31 +0200 |
commit | 497d652aa83ed81e04f9400ae84362642585dfca (patch) | |
tree | d2264864ed3eee9d9ed48a71ea2a26dbdd1db69f | |
parent | 023b44c71ea7739716ebd010cea2841e5336a69b (diff) | |
download | skyhanni-497d652aa83ed81e04f9400ae84362642585dfca.tar.gz skyhanni-497d652aa83ed81e04f9400ae84362642585dfca.tar.bz2 skyhanni-497d652aa83ed81e04f9400ae84362642585dfca.zip |
code cleanup in the chat error repo logic
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt | 18 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt | 60 |
2 files changed, 38 insertions, 40 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt index 486617651..3ec529db3 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt @@ -1,10 +1,18 @@ package at.hannibal2.skyhanni.data.jsonobjects.repo import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName -data class RepoErrorData( - @Expose var messageExact: List<String>?, - @Expose var messageStartsWith: List<String>?, - @Expose var replaceMessage: String?, - @Expose var affectedVersions: List<String> = listOf(), +data class RepoErrorJson( + @Expose @SerializedName("changed_error_messages") val changedErrorMessages: List<RepoErrorData>, ) + +data class RepoErrorData( + @Expose @SerializedName("message_exact") private var rawMessageExact: List<String>?, + @Expose @SerializedName("message_starts_with") private var rawMessageStartsWith: List<String>?, + @Expose @SerializedName("replace_message") var replaceMessage: String?, + @Expose @SerializedName("affected_versions") var affectedVersions: List<String> = listOf(), +) { + val messageExact by lazy { rawMessageExact ?: emptyList() } + val messageStartsWith by lazy { rawMessageStartsWith ?: emptyList() } +} 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 e0fcf8fcb..7fed3ad02 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt @@ -1,8 +1,8 @@ package at.hannibal2.skyhanni.test.command import at.hannibal2.skyhanni.SkyHanniMod -import at.hannibal2.skyhanni.config.ConfigManager import at.hannibal2.skyhanni.data.jsonobjects.repo.RepoErrorData +import at.hannibal2.skyhanni.data.jsonobjects.repo.RepoErrorJson import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ChatUtils @@ -12,7 +12,6 @@ import at.hannibal2.skyhanni.utils.OSUtils import at.hannibal2.skyhanni.utils.StringUtils import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.TimeLimitedSet -import at.hannibal2.skyhanni.utils.json.fromJson import net.minecraft.client.Minecraft import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.minutes @@ -24,6 +23,7 @@ object ErrorManager { private val errorMessages = mutableMapOf<String, String>() private val fullErrorMessages = mutableMapOf<String, String>() private var cache = TimeLimitedSet<Pair<String, Int>>(10.minutes) + private var repoErrors: List<RepoErrorData> = emptyList() private val breakAfter = listOf( "at at.hannibal2.skyhanni.config.commands.Commands\$createCommand", @@ -156,66 +156,56 @@ object ErrorManager { val extraDataString = buildExtraDataString(extraData) val rawMessage = message.removeColor() - errorMessages[randomId] = - "```\nSkyHanni ${SkyHanniMod.version}: $rawMessage\n \n$stackTrace\n$extraDataString```" + 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$extraDataString```" + val finalMessage = buildFinalMessage(message) ?: return + ChatUtils.clickableChat( + "§c[SkyHanni-${SkyHanniMod.version}]: $finalMessage Click here to copy the error into the clipboard.", + onClick = { copyError(randomId) }, + "§eClick to copy!", + prefix = false, + ) + } + + private fun buildFinalMessage(message: String): String? { var finalMessage = message if (finalMessage.last() !in ".?!") { finalMessage += "§c." } + val rawMessage = message.removeColor() var hideError = false for (repoError in repoErrors) { - for (s in repoError.messageStartsWith ?: listOf()) { - if (rawMessage.startsWith(s)) { + for (string in repoError.messageStartsWith) { + if (rawMessage.startsWith(string)) { hideError = true } } - for (s in repoError.messageExact ?: listOf()) { - if (rawMessage == s) { + for (string in repoError.messageExact) { + if (rawMessage == string) { hideError = true } } if (hideError) { - if (repoError.replaceMessage != null) { - finalMessage = repoError.replaceMessage!! + repoError.replaceMessage?.let { + finalMessage = it hideError = false } break } } - if (!hideError) { - ChatUtils.clickableChat( - "§c[SkyHanni-${SkyHanniMod.version}]: $finalMessage Click here to copy the error into the clipboard.", - onClick = { copyError(randomId) }, - "§eClick to copy!", - prefix = false, - ) - } - + return if (hideError) null else finalMessage } - private var repoErrors: List<RepoErrorData> = listOf() - @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - val chatErrors = event.repoLocation.resolve("chat_errors") - repoErrors = if (chatErrors.exists()) { - chatErrors.listFiles() - .filter { - it != null && it.isFile && it.canRead() - } - .map { - ConfigManager.gson.fromJson<RepoErrorData>(it.readText()) - }.filter { - SkyHanniMod.version in it.affectedVersions - } - } else { - listOf() - } + val data = event.getConstant<RepoErrorJson>("ChangedChatErrors") + val version = SkyHanniMod.version + + repoErrors = data.changedErrorMessages.filter { version in it.affectedVersions } } private fun buildExtraDataString(extraData: Array<out Pair<String, Any?>>): String { |