diff --git a/src/org/thoughtcrime/securesms/TransportOptions.java b/src/org/thoughtcrime/securesms/TransportOptions.java index 674028f54e..93d174f606 100644 --- a/src/org/thoughtcrime/securesms/TransportOptions.java +++ b/src/org/thoughtcrime/securesms/TransportOptions.java @@ -5,15 +5,16 @@ import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.util.CharacterCalculator; import org.thoughtcrime.securesms.util.MmsCharacterCalculator; -import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.util.PushCharacterCalculator; import org.thoughtcrime.securesms.util.SmsCharacterCalculator; import org.thoughtcrime.securesms.util.dualsim.SubscriptionInfoCompat; import org.thoughtcrime.securesms.util.dualsim.SubscriptionManagerCompat; import org.whispersystems.libsignal.util.guava.Optional; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -105,13 +106,17 @@ public class TransportOptions { } public void disableTransport(Type type) { - Optional option = find(type); + TransportOption selected = selectedOption.orNull(); - if (option.isPresent()) { - enabledTransports.remove(option.get()); + Iterator iterator = enabledTransports.iterator(); + while (iterator.hasNext()) { + TransportOption option = iterator.next(); - if (selectedOption.isPresent() && selectedOption.get().getType() == type) { - setSelectedTransport(null); + if (option.isType(type)) { + if (selected == option) { + setSelectedTransport(null); + } + iterator.remove(); } } } @@ -183,16 +188,6 @@ public class TransportOptions { } } - private Optional find(Type type) { - for (TransportOption option : enabledTransports) { - if (option.isType(type)) { - return Optional.of(option); - } - } - - return Optional.absent(); - } - private boolean isEnabled(TransportOption transportOption) { for (TransportOption option : enabledTransports) { if (option.equals(transportOption)) return true;