diff --git a/MessengerProj/jni/mrwrapper.c b/MessengerProj/jni/mrwrapper.c
index ff205d029..84fd12c90 100644
--- a/MessengerProj/jni/mrwrapper.c
+++ b/MessengerProj/jni/mrwrapper.c
@@ -606,6 +606,12 @@ JNIEXPORT jlong Java_com_b44t_messenger_MrMailbox_checkScannedQrCPtr(JNIEnv *env
}
+JNIEXPORT void Java_com_b44t_messenger_MrMailbox_joinOob(JNIEnv *env, jclass cls, jint contact_id)
+{
+ mrmailbox_join_oob(get_mrmailbox_t(env, cls), contact_id);
+}
+
+
/* MrMailbox - misc. */
JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_getInfo(JNIEnv *env, jclass cls)
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java b/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java
index 816223783..5a7a8b9ba 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java
@@ -38,6 +38,7 @@ import android.content.res.Configuration;
import android.graphics.Outline;
import android.os.Build;
import android.os.Bundle;
+import android.support.annotation.StringRes;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
@@ -721,8 +722,21 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
String qrRawString = scanResult.getContents();
final MrLot qrParsed = MrMailbox.checkScannedQr(qrRawString);
+ String nameNAddr = MrMailbox.getContact(qrParsed.getId()).getNameNAddr();
switch( qrParsed.getState() ) {
+ case MrMailbox.MR_QR_FINGERPRINT_ASK_OOB:
+ builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintAskOob), nameNAddr)));
+ builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ MrMailbox.joinOob(qrParsed.getId());
+ }
+ });
+ builder.setNegativeButton(R.string.Cancel, null);
+ break;
+
+
case MrMailbox.MR_QR_FINGERPRINT_WITHOUT_ADDR:
builder.setMessage(AndroidUtilities.replaceTags(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintWithoutAddr)+"\n\n"+ApplicationLoader.applicationContext.getString(R.string.OobFingerprint)+":\n"+qrParsed.getText2()+""));
builder.setPositiveButton(R.string.OK, null);
@@ -735,10 +749,15 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
});
break;
- case MrMailbox.MR_QR_FINGERPRINT_ASK_CMP:
+ case MrMailbox.MR_QR_FINGERPRINT_MISMATCH:
+ builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintMismatch), nameNAddr)));
+ builder.setPositiveButton(R.string.OK, null);
+ break;
+
+ case MrMailbox.MR_QR_FINGERPRINT_OK:
case MrMailbox.MR_QR_ADDR:
- String name = MrMailbox.getContact(qrParsed.getId()).getNameNAddr();
- builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.AskStartChatWith), name)));
+ @StringRes int resId = qrParsed.getState()==MrMailbox.MR_QR_ADDR? R.string.AskStartChatWith : R.string.OobFingerprintOk;
+ builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(resId, nameNAddr))));
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
@@ -750,13 +769,6 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
builder.setNegativeButton(R.string.Cancel, null);
break;
- case MrMailbox.MR_QR_FINGERPRINT_MISMATCH: {
- String addr = MrMailbox.getContact(qrParsed.getId()).getAddr();
- builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintMismatch), addr)));
- builder.setPositiveButton(R.string.OK, null);
- }
- break;
-
default:
String msg;
final String scannedText;
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java b/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java
index d293e92c5..bd9655080 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java
@@ -183,14 +183,16 @@ public class MrMailbox {
// out-of-band verification
public native static String getQr();
- public final static int MR_QR_FINGERPRINT_ASK_CMP = 200;
- public final static int MR_QR_FINGERPRINT_MISMATCH = 205;
- public final static int MR_QR_FINGERPRINT_WITHOUT_ADDR = 210;
- public final static int MR_QR_ADDR = 220;
- public final static int MR_QR_TEXT = 230;
+ public final static int MR_QR_FINGERPRINT_ASK_OOB = 200;
+ public final static int MR_QR_FINGERPRINT_OK = 210;
+ public final static int MR_QR_FINGERPRINT_MISMATCH = 220;
+ public final static int MR_QR_FINGERPRINT_WITHOUT_ADDR = 230;
+ public final static int MR_QR_ADDR = 320;
+ public final static int MR_QR_TEXT = 330;
public final static int MR_QR_ERROR = 400;
public static MrLot checkScannedQr(String qr) { return new MrLot(checkScannedQrCPtr(qr)); }
public native static int checkScannedQrCPtr(String qr);
+ public native static void joinOob(int contact_id);
// static
public native static String MrGetVersionStr ();
diff --git a/MessengerProj/src/main/res/values/strings.xml b/MessengerProj/src/main/res/values/strings.xml
index 4f024530e..a5f71da59 100644
--- a/MessengerProj/src/main/res/values/strings.xml
+++ b/MessengerProj/src/main/res/values/strings.xml
@@ -431,6 +431,8 @@
Show QR code
The scanned QR code contains the following text:\n\n%1$s
Fingerprint
- This QR code contains a fingerprint but no e-mail address.\n\nFor an out-of-band-verification, please first establish an encrpyted connection to the recipient.
+ Verify contact and start chatting with ]]>%1$s]]>?
+ Contact ]]>%1$s]]> verified successfully. Start chatting now?
The scanned fingerprint does ]]>not match]]> the fingerprint last seen for ]]>%1$s]]>.
+ This QR code contains a fingerprint but no e-mail address.\n\nFor an out-of-band-verification, please first establish an encrpyted connection to the recipient.