Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/iNPUTmice/Conversations.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2021-01-19 17:45:41 +0300
committerDaniel Gultsch <daniel@gultsch.de>2021-01-19 17:45:43 +0300
commit26a4598f3c4a76baef69ae509dd2e77b8d5c25b7 (patch)
tree1dda075710f875231540011951f099d39940ac9f /src/quicksy/java
parent624bb565a87b68ab9a94edfc7afbe19138f88074 (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.java30
-rw-r--r--src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java7
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);