kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add timeout for registering SMS listener during registration.
rodzic
99a516f8e5
commit
3692d87531
|
@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.registration.util.RegistrationNumberInputContr
|
||||||
import org.thoughtcrime.securesms.registration.viewmodel.NumberViewState;
|
import org.thoughtcrime.securesms.registration.viewmodel.NumberViewState;
|
||||||
import org.thoughtcrime.securesms.registration.viewmodel.RegistrationViewModel;
|
import org.thoughtcrime.securesms.registration.viewmodel.RegistrationViewModel;
|
||||||
import org.thoughtcrime.securesms.util.CommunicationActions;
|
import org.thoughtcrime.securesms.util.CommunicationActions;
|
||||||
|
import org.thoughtcrime.securesms.util.Debouncer;
|
||||||
import org.thoughtcrime.securesms.util.Dialogs;
|
import org.thoughtcrime.securesms.util.Dialogs;
|
||||||
import org.thoughtcrime.securesms.util.LifecycleDisposable;
|
import org.thoughtcrime.securesms.util.LifecycleDisposable;
|
||||||
import org.thoughtcrime.securesms.util.PlayServicesUtil;
|
import org.thoughtcrime.securesms.util.PlayServicesUtil;
|
||||||
|
@ -51,6 +52,9 @@ import org.thoughtcrime.securesms.util.ViewUtil;
|
||||||
import org.thoughtcrime.securesms.util.navigation.SafeNavigation;
|
import org.thoughtcrime.securesms.util.navigation.SafeNavigation;
|
||||||
import org.thoughtcrime.securesms.util.views.CircularProgressMaterialButton;
|
import org.thoughtcrime.securesms.util.views.CircularProgressMaterialButton;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.rxjava3.disposables.Disposable;
|
import io.reactivex.rxjava3.disposables.Disposable;
|
||||||
|
|
||||||
|
@ -183,15 +187,34 @@ public final class EnterPhoneNumberFragment extends LoggingFragment implements R
|
||||||
if (fcmSupported) {
|
if (fcmSupported) {
|
||||||
SmsRetrieverClient client = SmsRetriever.getClient(context);
|
SmsRetrieverClient client = SmsRetriever.getClient(context);
|
||||||
Task<Void> task = client.startSmsRetriever();
|
Task<Void> task = client.startSmsRetriever();
|
||||||
|
AtomicBoolean handled = new AtomicBoolean(false);
|
||||||
|
|
||||||
|
Debouncer debouncer = new Debouncer(TimeUnit.SECONDS.toMillis(5));
|
||||||
|
debouncer.publish(() -> {
|
||||||
|
if (!handled.getAndSet(true)) {
|
||||||
|
Log.w(TAG, "Timed out waiting for SMS listener!");
|
||||||
|
requestVerificationCode(Mode.SMS_WITHOUT_LISTENER);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
task.addOnSuccessListener(none -> {
|
task.addOnSuccessListener(none -> {
|
||||||
|
if (!handled.getAndSet(true)) {
|
||||||
Log.i(TAG, "Successfully registered SMS listener.");
|
Log.i(TAG, "Successfully registered SMS listener.");
|
||||||
requestVerificationCode(Mode.SMS_WITH_LISTENER);
|
requestVerificationCode(Mode.SMS_WITH_LISTENER);
|
||||||
|
} else {
|
||||||
|
Log.w(TAG, "Successfully registered listener after timeout.");
|
||||||
|
}
|
||||||
|
debouncer.clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
task.addOnFailureListener(e -> {
|
task.addOnFailureListener(e -> {
|
||||||
|
if (!handled.getAndSet(true)) {
|
||||||
Log.w(TAG, "Failed to register SMS listener.", e);
|
Log.w(TAG, "Failed to register SMS listener.", e);
|
||||||
requestVerificationCode(Mode.SMS_WITHOUT_LISTENER);
|
requestVerificationCode(Mode.SMS_WITHOUT_LISTENER);
|
||||||
|
} else {
|
||||||
|
Log.w(TAG, "Failed to register listener after timeout.");
|
||||||
|
}
|
||||||
|
debouncer.clear();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Log.i(TAG, "FCM is not supported, using no SMS listener");
|
Log.i(TAG, "FCM is not supported, using no SMS listener");
|
||||||
|
|
Ładowanie…
Reference in New Issue