From b48e43dff9baf2710809debe47a4bd5b329d70a0 Mon Sep 17 00:00:00 2001 From: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> Date: Fri, 14 Jun 2024 05:58:40 +1000 Subject: Backend: Remove deprecated time utils format (#1898) * remove deprecated time utils format * cleanup file * mix merge * make it default to right amount * fix merge * fix merge * revert 2 changes * revert other thing --------- Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../java/at/hannibal2/skyhanni/utils/TimeUtils.kt | 80 +++++++++------------- 1 file changed, 31 insertions(+), 49 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt index 78213df56..43cd46906 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt @@ -19,66 +19,42 @@ object TimeUtils { showMilliSeconds: Boolean = false, longName: Boolean = false, maxUnits: Int = -1, - ): String = formatDuration( - inWholeMilliseconds - 999, biggestUnit, showMilliSeconds, longName, maxUnits - ) - - fun Duration.timerColor(default: String = "§f") = when (this) { - in 0.seconds..60.seconds -> "§c" - in 60.seconds..3.minutes -> "§6" - in 3.minutes..10.minutes -> "§e" - else -> default - } - - @Deprecated( - "Has an offset of one second", - ReplaceWith("millis.toDuration(DurationUnit.MILLISECONDS).format(biggestUnit, showMilliSeconds, longName, maxUnits)") - ) - fun formatDuration( - millis: Long, - biggestUnit: TimeUnit = TimeUnit.YEAR, - showMilliSeconds: Boolean = false, - longName: Boolean = false, - maxUnits: Int = -1, ): String { - // TODO: if this weird offset gets removed, also remove that subtraction from formatDuration(kotlin.time.Duration) - var milliseconds = millis + 999 - val map = mutableMapOf() + var millis = inWholeMilliseconds + val parts = mutableMapOf() + for (unit in TimeUnit.entries) { if (unit.ordinal >= biggestUnit.ordinal) { val factor = unit.factor - map[unit] = (milliseconds / factor).toInt() - milliseconds %= factor + parts[unit] = (millis / factor).toInt() + millis %= factor } } - val builder = StringBuilder() - var count = 0 - for ((unit, value) in map.entries) { - if (value > 0 || builder.isNotEmpty() || unit == TimeUnit.SECOND) { - builder.append(value.addSeparators()) - val name = if (longName) { - " " + unit.longName + if (value > 1) "s" else "" - } else { - unit.shortName - } - - if (unit == TimeUnit.SECOND) { - if (showMilliSeconds) { - val formatMillis = milliseconds / 100 - builder.append(".") - builder.append(formatMillis) + var currentUnits = 0 + val result = buildString { + for ((unit, value) in parts) { + if (value != 0) { + val formatted = unit.format(value, longName) + append(formatted) + if (unit == TimeUnit.SECOND && showMilliSeconds) { + val formattedMillis = (millis / 100).toInt() + append(".$formattedMillis") } - builder.append(name) - } else { - builder.append("$name ") - } - count++ - if (maxUnits != -1 && count == maxUnits) break + append(" ") + if (maxUnits != -1 && ++currentUnits == maxUnits) break + } } } - return builder.toString().trim() + return result.trim() + } + + fun Duration.timerColor(default: String = "§f") = when (this) { + in 0.seconds..60.seconds -> "§c" + in 60.seconds..3.minutes -> "§6" + in 3.minutes..10.minutes -> "§e" + else -> default } val Duration.inWholeTicks: Int @@ -182,4 +158,10 @@ enum class TimeUnit(val factor: Long, val shortName: String, val longName: Strin MINUTE(FACTOR_MINUTES, "m", "Minute"), SECOND(FACTOR_SECONDS, "s", "Second"), ; + + fun format(value: Int, longFormat: Boolean = false) = if (longFormat) { + "${value.addSeparators()} $longName" + if (value > 1) "s" else "" + } else { + "${value.addSeparators()}$shortName" + } } -- cgit