diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2021-01-19 17:45:41 +0300 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2021-01-19 17:45:43 +0300 |
commit | 26a4598f3c4a76baef69ae509dd2e77b8d5c25b7 (patch) | |
tree | 1dda075710f875231540011951f099d39940ac9f /src/quicksy/java | |
parent | 624bb565a87b68ab9a94edfc7afbe19138f88074 (diff) |
automatically receive Quicksy SMS. fixes #3962
requires new version of QuicksyServer
Diffstat (limited to 'src/quicksy/java')
-rw-r--r-- | src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java | 30 | ||||
-rw-r--r-- | src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java | 7 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java b/src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java index f8e73b447..c5d1d7b9b 100644 --- a/src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java +++ b/src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java @@ -1,8 +1,10 @@ package eu.siacs.conversations.services; +import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; +import android.os.Bundle; import android.os.SystemClock; import android.preference.PreferenceManager; import android.util.Log; @@ -47,6 +49,7 @@ import eu.siacs.conversations.utils.AccountUtils; import eu.siacs.conversations.utils.CryptoHelper; import eu.siacs.conversations.utils.PhoneNumberUtilWrapper; import eu.siacs.conversations.utils.SerialSingleThreadExecutor; +import eu.siacs.conversations.utils.SmsRetrieverWrapper; import eu.siacs.conversations.xml.Element; import eu.siacs.conversations.xml.Namespace; import eu.siacs.conversations.xmpp.Jid; @@ -122,6 +125,7 @@ public class QuickConversationsService extends AbstractQuickConversationsService public void requestVerification(Phonenumber.PhoneNumber phoneNumber) { final String e164 = PhoneNumberUtilWrapper.normalize(service, phoneNumber); if (mVerificationRequestInProgress.compareAndSet(false, true)) { + SmsRetrieverWrapper.start(service); new Thread(() -> { try { final URL url = new URL(BASE_URL + "/authentication/" + e164); @@ -322,6 +326,28 @@ public class QuickConversationsService extends AbstractQuickConversationsService }); } + @Override + public void handleSmsReceived(final Intent intent) { + final Bundle extras = intent.getExtras(); + final String pin = SmsRetrieverWrapper.extractPin(extras); + if (pin == null) { + Log.d(Config.LOGTAG, "unable to extract Pin from received SMS"); + return; + } + final Account account = AccountUtils.getFirst(service); + if (account == null) { + Log.d(Config.LOGTAG, "no account configured to process PIN received by SMS"); + return; + } + verify(account, pin); + synchronized (mOnVerification) { + for (OnVerification onVerification : mOnVerification) { + onVerification.startBackgroundVerification(pin); + } + } + + } + private void considerSync(boolean forced) { Map<String, PhoneNumberContact> contacts = PhoneNumberContact.load(service); @@ -429,11 +455,13 @@ public class QuickConversationsService extends AbstractQuickConversationsService void onVerificationSucceeded(); void onVerificationRetryAt(long timestamp); + + void startBackgroundVerification(String pin); } private static class Attempt { private final long timestamp; - private int hash; + private final int hash; private static final Attempt NULL = new Attempt(0, 0); diff --git a/src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java b/src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java index 6358e3646..1e388ce8f 100644 --- a/src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java +++ b/src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java @@ -316,6 +316,12 @@ public class VerifyActivity extends XmppActivity implements ClipboardManager.OnP runOnUiThread(VERIFICATION_TIMEOUT_UPDATER); } + @Override + public void startBackgroundVerification(String pin) { + pinEntryWrapper.setPin(pin); + setVerifyingState(true); + } + //send sms again button callback @Override public void onVerificationRequestFailed(int code) { @@ -329,6 +335,7 @@ public class VerifyActivity extends XmppActivity implements ClipboardManager.OnP @Override public void onVerificationRequested() { runOnUiThread(() -> { + pinEntryWrapper.clear(); setRequestingVerificationState(false); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.we_have_sent_you_another_sms); |