From a9479d910645b29799641f4afba949befa4cf9b0 Mon Sep 17 00:00:00 2001 From: septs Date: Fri, 7 Mar 2025 15:44:26 +0800 Subject: [PATCH] feat: improve lpa parsing compatibility --- .../java/im/angry/openeuicc/util/ActivationCode.kt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/util/ActivationCode.kt b/app-common/src/main/java/im/angry/openeuicc/util/ActivationCode.kt index fd8156b..fbecfae 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/ActivationCode.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/ActivationCode.kt @@ -7,14 +7,13 @@ data class ActivationCode( val confirmationCodeRequired: Boolean = false, ) { companion object { - fun fromString(input: String): ActivationCode { - val components = input.removePrefix("LPA:").split('$') - .map(String::trim).map { it.ifBlank { null } } - if (components.size < 2 || components[0] != "1" || components[1] == null) { - throw IllegalStateException("Invalid activation code format") - } + fun fromString(token: String): ActivationCode { + val input = if (token.startsWith("LPA:", true)) token.drop(4) else token + val components = input.split('$').map { it.trim().ifEmpty { null } } + check(components.size >= 2) { "Invalid activation code format" } + check(components[0] == "1") { "Invalid activation code version" } return ActivationCode( - components[1]!!, + checkNotNull(components[1]) { "Invalid SM-DP+ address" }, components.getOrNull(2), components.getOrNull(3), components.getOrNull(4) == "1",