From bb5417d37f3bb732c4e2faf769d12976bc5e607a Mon Sep 17 00:00:00 2001 From: septs Date: Sun, 16 Mar 2025 13:53:38 +0800 Subject: [PATCH 1/3] chore: improve lpa string parsing --- .../wizard/DownloadWizardMethodSelectFragment.kt | 2 +- .../java/im/angry/openeuicc/util/LPAString.kt | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt index 4b02b7a..a73a586 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt @@ -126,7 +126,7 @@ class DownloadWizardMethodSelectFragment : DownloadWizardActivity.DownloadWizard state.matchingId = parsed.matchingId state.confirmationCodeRequired = parsed.confirmationCodeRequired gotoNextFragment(DownloadWizardDetailsFragment()) - } catch (e: IllegalArgumentException) { + } catch (e: IllegalStateException) { AlertDialog.Builder(requireContext()).apply { setTitle(R.string.profile_download_incorrect_lpa_string) setMessage(R.string.profile_download_incorrect_lpa_string_message) diff --git a/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt b/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt index 20956fb..db5251d 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt @@ -8,15 +8,15 @@ data class LPAString( ) { companion object { fun parse(input: String): LPAString { - val components = input.removePrefix("LPA:").split('$') - if (components.size < 2 || components[0] != "1") { - throw IllegalArgumentException("Invalid activation code format") - } + var token = input + if (token.startsWith("LPA:", ignoreCase = true)) token = token.drop(4) + val components = token.split('$').map { it.trim().ifBlank { null } } + check(components.getOrNull(0) == "1") { "Invalid AC_Format" } return LPAString( - address = components[1].trim(), - matchingId = components.getOrNull(2)?.trim()?.ifBlank { null }, - oid = components.getOrNull(3)?.trim()?.ifBlank { null }, - confirmationCodeRequired = components.getOrNull(4)?.trim() == "1" + checkNotNull(components.getOrNull(1)) { "SM-DP+ is required" }, + components.getOrNull(2), + components.getOrNull(3), + components.getOrNull(4) == "1" ) } } -- 2.45.3 From 98b41d3591870c96bf4158e7e1b1bc194a9dbfcd Mon Sep 17 00:00:00 2001 From: septs Date: Thu, 20 Mar 2025 16:24:17 +0800 Subject: [PATCH 2/3] chore: accept reviews --- app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt b/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt index db5251d..63a81f1 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/LPAString.kt @@ -11,9 +11,9 @@ data class LPAString( var token = input if (token.startsWith("LPA:", ignoreCase = true)) token = token.drop(4) val components = token.split('$').map { it.trim().ifBlank { null } } - check(components.getOrNull(0) == "1") { "Invalid AC_Format" } + require(components.getOrNull(0) == "1") { "Invalid AC_Format" } return LPAString( - checkNotNull(components.getOrNull(1)) { "SM-DP+ is required" }, + requireNotNull(components.getOrNull(1)) { "SM-DP+ is required" }, components.getOrNull(2), components.getOrNull(3), components.getOrNull(4) == "1" -- 2.45.3 From 8fb4bd3f328abf50a6f76943a1a3bea6178ecc9e Mon Sep 17 00:00:00 2001 From: septs Date: Thu, 20 Mar 2025 16:32:02 +0800 Subject: [PATCH 3/3] chore: accept reviews --- .../openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt index a73a586..4b02b7a 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt @@ -126,7 +126,7 @@ class DownloadWizardMethodSelectFragment : DownloadWizardActivity.DownloadWizard state.matchingId = parsed.matchingId state.confirmationCodeRequired = parsed.confirmationCodeRequired gotoNextFragment(DownloadWizardDetailsFragment()) - } catch (e: IllegalStateException) { + } catch (e: IllegalArgumentException) { AlertDialog.Builder(requireContext()).apply { setTitle(R.string.profile_download_incorrect_lpa_string) setMessage(R.string.profile_download_incorrect_lpa_string_message) -- 2.45.3