Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48fee33e authored by Rafael Higuera Silva's avatar Rafael Higuera Silva
Browse files

Add new dialogue and RAC logic.

A new dialogue will pop up if the eSIM that is being deleted has carrier
Vodafone DE and does not have wifi connection or connection from another
sim.

Test: make, atest SubscriptionUtilTest and tested manually
Bug: 316419093
Change-Id: I957b67339a0ab651f38984e7d1061a8aff8fe2a1
parent 383097f1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -808,4 +808,8 @@
    <!-- Array of carrier id to allow the pSIM conversion-->
    <integer-array name="config_psim_conversion_menu_enabled_carrier" translatable="false">
    </integer-array>

    <!-- Array of carrier id that uses reusable activation code-->
    <integer-array name="config_carrier_use_rac" translatable="false">
    </integer-array>
</resources>
+13 −3
Original line number Diff line number Diff line
@@ -49,9 +49,11 @@ import com.android.settings.flags.Flags;
import com.android.settings.network.helper.SelectableSubscriptions;
import com.android.settings.network.helper.SubscriptionAnnotation;
import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
import com.android.settings.network.telephony.EuiccRacConnectivityDialogActivity;
import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -557,14 +559,22 @@ public class SubscriptionUtil {
     * @param context {@code Context}
     * @param subId The id of subscription need to be deleted.
     */
    public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId) {
    public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId,
            int carrierId) {
        if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
            Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
            return;
        }
        // TODO(b/325693582): Add verification if carrier is RAC and logic for new dialog
        final int[] carriersThatUseRAC = context.getResources().getIntArray(
                R.array.config_carrier_use_rac);
        boolean isCarrierRac = Arrays.stream(carriersThatUseRAC).anyMatch(cid -> cid == carrierId);

        if (isCarrierRac && !isConnectedToWifiOrDifferentSubId(context, subId)) {
            context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId));
        } else {
            context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
        }
    }

    /**
     * Finds and returns a subscription with a specific subscription ID.
+6 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
class DeleteSimProfilePreferenceController(context: Context, preferenceKey: String) :
    BasePreferenceController(context, preferenceKey) {
    private var subscriptionId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID
    private var carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID
    private var subscriptionInfo: SubscriptionInfo? = null
    private lateinit var preference: Preference

@@ -40,6 +41,9 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
        this.subscriptionId = subscriptionId
        subscriptionInfo = SubscriptionUtil.getAvailableSubscriptions(mContext)
            .find { it.subscriptionId == subscriptionId && it.isEmbedded }
        subscriptionInfo?.let {
            carrierId = it.carrierId
        }
    }

    override fun getAvailabilityStatus() = when (subscriptionInfo) {
@@ -67,7 +71,8 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
    }

    private fun deleteSim() {
        SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId)
        SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId,
                carrierId)
        // result handled in MobileNetworkSettings
    }
}