diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardSlotSelectFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardSlotSelectFragment.kt index 3723aea..5510fb0 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardSlotSelectFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardSlotSelectFragment.kt @@ -111,7 +111,7 @@ class DownloadWizardSlotSelectFragment : DownloadWizardActivity.DownloadWizardSt } catch (e: Exception) { "" }, - channel.lpa.profiles.find { it.state == LocalProfileInfo.State.Enabled }?.displayName, + channel.lpa.profiles.enabled?.displayName, channel.intrinsicChannelName, ) } diff --git a/app-common/src/main/java/im/angry/openeuicc/util/LPAUtils.kt b/app-common/src/main/java/im/angry/openeuicc/util/LPAUtils.kt index 0fe44c1..9f95412 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/LPAUtils.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/LPAUtils.kt @@ -16,9 +16,10 @@ val LocalProfileInfo.isEnabled: Boolean get() = state == LocalProfileInfo.State.Enabled val List.operational: List - get() = filter { - it.profileClass == LocalProfileInfo.Clazz.Operational - } + get() = filter { it.profileClass == LocalProfileInfo.Clazz.Operational } + +val List.enabled: LocalProfileInfo? + get() = find { it.isEnabled } val List.hasMultipleChips: Boolean get() = distinctBy { it.slotId }.size > 1 @@ -39,7 +40,7 @@ fun LocalProfileAssistant.switchProfile( * See EuiccManager.waitForReconnect() */ fun LocalProfileAssistant.disableActiveProfile(refresh: Boolean): Boolean = - profiles.find { it.isEnabled }?.let { + profiles.enabled?.let { Log.i(TAG, "Disabling active profile ${it.iccid}") disableProfile(it.iccid, refresh) } ?: true @@ -52,7 +53,7 @@ fun LocalProfileAssistant.disableActiveProfile(refresh: Boolean): Boolean = * disable. */ fun LocalProfileAssistant.disableActiveProfileKeepIccId(refresh: Boolean): String? = - profiles.find { it.isEnabled }?.let { + profiles.enabled?.let { Log.i(TAG, "Disabling active profile ${it.iccid}") if (disableProfile(it.iccid, refresh)) { it.iccid diff --git a/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt b/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt index 3c522c5..02b3baf 100644 --- a/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt +++ b/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt @@ -186,13 +186,10 @@ class OpenEuiccService : EuiccService(), OpenEuiccContextMarker { ) } - try { - return@withEuiccChannelManager euiccChannelManager.withEuiccChannel( - slotId, - port - ) { channel -> + return@withEuiccChannelManager try { + euiccChannelManager.withEuiccChannel(slotId, port) { channel -> val filteredProfiles = - if (runBlocking { preferenceRepository.unfilteredProfileListFlow.first() }) + if (preferenceRepository.unfilteredProfileListFlow.first()) channel.lpa.profiles else channel.lpa.profiles.operational @@ -224,7 +221,7 @@ class OpenEuiccService : EuiccService(), OpenEuiccContextMarker { ) } } catch (e: EuiccChannelManager.EuiccChannelNotFoundException) { - return@withEuiccChannelManager GetEuiccProfileInfoListResult( + GetEuiccProfileInfoListResult( RESULT_FIRST_USER, arrayOf(), true @@ -246,11 +243,7 @@ class OpenEuiccService : EuiccService(), OpenEuiccContextMarker { // Check that the profile has been disabled on all slots val enabledAnywhere = ports.any { port -> euiccChannelManager.withEuiccChannel(slotId, port) { channel -> - val profile = channel.lpa.profiles.find { - it.iccid == iccid - } ?: return@withEuiccChannel false - - profile.state == LocalProfileInfo.State.Enabled + channel.lpa.profiles.enabled?.iccid == iccid } } @@ -354,8 +347,8 @@ class OpenEuiccService : EuiccService(), OpenEuiccContextMarker { // iccid == null means disabling val foundIccid = euiccChannelManager.withEuiccChannel(foundSlotId, foundPortId) { channel -> - channel.lpa.profiles.find { it.state == LocalProfileInfo.State.Enabled } - }?.iccid ?: return@withEuiccChannelManager RESULT_FIRST_USER + channel.lpa.profiles.enabled?.iccid + } ?: return@withEuiccChannelManager RESULT_FIRST_USER Pair(foundIccid, false) } else { Pair(iccid, true)