VendettaManager/app/src/main/java/dev/beefers/vendetta/manager/utils/VersionUtils.kt

40 lines
1.2 KiB
Kotlin

package dev.beefers.vendetta.manager.utils
import androidx.annotation.StringRes
import dev.beefers.vendetta.manager.R
import java.io.Serializable
data class DiscordVersion(
val major: Int,
val minor: Int,
val type: Type
) : Serializable {
enum class Type(val label: String, @StringRes val labelRes: Int) {
STABLE("Stable", R.string.channel_stable),
BETA("Beta", R.string.channel_beta),
ALPHA("Alpha", R.string.channel_alpha)
}
override fun toString() = "$major.$minor - ${type.label}"
fun toVersionCode() = "$major${type.ordinal}${if (minor < 10) 0 else ""}${minor}"
companion object {
fun fromVersionCode(string: String): DiscordVersion? = with(string) {
if (length < 4) return@with null
if (toIntOrNull() == null) return@with null
val codeReversed = toCharArray().reversed().joinToString("")
val typeInt = codeReversed[2].toString().toInt()
val type = Type.values().getOrNull(typeInt) ?: return@with null
DiscordVersion(
codeReversed.slice(3..codeReversed.lastIndex).reversed().toInt(),
codeReversed.substring(0, 2).reversed().toInt(),
type
)
}
}
}