Disable transport disables all matching TransportOptions.

Fixes #8744
This commit is contained in:
Alan Evans 2019-04-19 12:37:26 -03:00 committed by Greyson Parrelli
parent 48efcaa785
commit fa35814344

View File

@ -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<TransportOption> option = find(type);
TransportOption selected = selectedOption.orNull();
if (option.isPresent()) {
enabledTransports.remove(option.get());
Iterator<TransportOption> 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<TransportOption> 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;