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.