Support install link

Closes #2001
Fixes #1722
This commit is contained in:
Moxie Marlinspike 2014-12-12 18:31:20 -08:00
parent 642334da1f
commit 426c56c77d
4 changed files with 38 additions and 16 deletions

View file

@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="Security"
android:id="@+id/menu_security"
android:icon="?menu_unlock_icon"
app:showAsAction="ifRoom">
<menu>
<item android:title="@string/conversation_insecure__menu_start_secure_session"
android:id="@+id/menu_start_secure_session" />
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Invite"
android:id="@+id/menu_invite"/>
</menu>
</item>
</menu>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="Security"
android:id="@+id/menu_security"
android:icon="?menu_unlock_icon"
app:showAsAction="ifRoom">
<menu>
<item android:title="@string/conversation_insecure__menu_start_secure_session"
android:id="@+id/menu_start_secure_session" />
</menu>
</item>
</menu>

View file

@ -109,6 +109,8 @@
<string name="ConversationActivity_transport_secure_sms">Secure SMS</string>
<string name="ConversationActivity_transport_secure_mms">Secure MMS</string>
<string name="ConversationActivity_transport_textsecure">TextSecure</string>
<string name="ConversationActivity_get_with_it">Get with it: %s</string>
<string name="ConversationActivity_install_textsecure">Install TextSecure: %s</string>
<!-- ConversationFragment -->
<string name="ConversationFragment_message_details">Message details</string>
@ -750,7 +752,7 @@
<!-- conversation_context_image -->
<string name="conversation_context_image__save_attachment">Save attachment</string>
<!-- conversation_insecure -->
<!-- conversation_insecure_no_push -->
<string name="conversation_insecure__menu_start_secure_session">Start secure session</string>
<!-- conversation_list_batch -->

View file

@ -41,7 +41,6 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
@ -109,7 +108,8 @@ import org.whispersystems.libaxolotl.state.SessionStore;
import org.whispersystems.textsecure.api.push.PushAddress;
import java.io.IOException;
import java.util.LinkedList;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.List;
import static org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord;
@ -257,7 +257,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (isSingleConversation() && isEncryptedConversation) {
inflater.inflate(R.menu.conversation_secure_identity, menu);
inflater.inflate(R.menu.conversation_secure_sms, menu.findItem(R.id.menu_security).getSubMenu());
} else if (isSingleConversation() && !pushRegistered) {
} else if (isSingleConversation()) {
if (!pushRegistered) inflater.inflate(R.menu.conversation_insecure_no_push, menu);
inflater.inflate(R.menu.conversation_insecure, menu);
}
@ -304,6 +305,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
case R.id.menu_distribution_conversation: handleDistributionConversationEnabled(item); return true;
case R.id.menu_edit_group: handleEditPushGroup(); return true;
case R.id.menu_leave: handleLeavePushGroup(); return true;
case R.id.menu_invite: handleInviteLink(); return true;
case android.R.id.home: handleReturnToConversationList(); return true;
}
@ -330,6 +332,16 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
finish();
}
private void handleInviteLink() {
try {
boolean a = SecureRandom.getInstance("SHA1PRNG").nextBoolean();
if (a) composeText.setText(getString(R.string.ConversationActivity_get_with_it, "http://sgnl.link/zhrzvk6"));
else composeText.setText(getString(R.string.ConversationActivity_install_textsecure, "http://sgnl.link/1yKYqoN"));
} catch (NoSuchAlgorithmException e) {
throw new AssertionError(e);
}
}
private void handleVerifyIdentity() {
Intent verifyIdentityIntent = new Intent(this, VerifyIdentityActivity.class);
verifyIdentityIntent.putExtra("recipient", getRecipients().getPrimaryRecipient());
@ -846,10 +858,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
private void selectContactInfo(ContactData contactData) {
final CharSequence[] numbers = new CharSequence[contactData.numbers.size()];
final CharSequence[] numbers = new CharSequence[contactData.numbers.size()];
final CharSequence[] numberItems = new CharSequence[contactData.numbers.size()];
for (int i = 0; i < contactData.numbers.size(); i++) {
numbers[i] = contactData.numbers.get(i).number;
numbers[i] = contactData.numbers.get(i).number;
numberItems[i] = contactData.numbers.get(i).type + ": " + contactData.numbers.get(i).number;
}