mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-19 19:08:26 +00:00
Fix up whitespace tagging and tag detection prompt.
1) Fix up the whitespace tagging so that it's a little more strict. 2) Don't display whitespace tags that we add to our own messages. 3) Make the tag detection prompt a little more visually pleasing.
This commit is contained in:
parent
4c3b7cbe08
commit
f39b8e5fc8
@ -9,12 +9,15 @@
|
||||
<TextView android:id="@+id/description_text"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dip"
|
||||
android:layout_marginBottom="5dip"
|
||||
android:text="@string/you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_key_exchange_so_you_can_communicate_securely"/>
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="@string/you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_secure_session"/>
|
||||
|
||||
<LinearLayout android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dip"
|
||||
android:layout_marginBottom="10dip"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button android:id="@+id/initiate_button"
|
||||
|
@ -204,7 +204,7 @@
|
||||
<string name="most_recent_from_s">Most recent from: %s</string>
|
||||
|
||||
<!-- auto_initiate_activity -->
|
||||
<string name="you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_key_exchange_so_you_can_communicate_securely">You have received a message from someone who supports TextSecure encrypted sessions. Would you like to initiate a key exchange so you can communicate securely?</string>
|
||||
<string name="you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_secure_session">You have received a message from someone who supports TextSecure encrypted sessions. Would you like to initiate a secure session?</string>
|
||||
<string name="initiate_exchange">Initiate Exchange</string>
|
||||
|
||||
<!-- change_passphrase_activity -->
|
||||
|
@ -30,6 +30,7 @@ import org.thoughtcrime.securesms.crypto.KeyExchangeInitiator;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.database.LocalKeyRecord;
|
||||
import org.thoughtcrime.securesms.database.RemoteKeyRecord;
|
||||
import org.thoughtcrime.securesms.protocol.Tag;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.util.MemoryCleaner;
|
||||
|
||||
@ -98,13 +99,9 @@ public class AutoInitiateActivity extends SherlockActivity {
|
||||
Recipient recipient, String message, long threadId)
|
||||
{
|
||||
return
|
||||
isMessageTagged(message) &&
|
||||
isThreadQualified(context, threadId) &&
|
||||
isExchangeQualified(context, masterSecret, recipient);
|
||||
}
|
||||
|
||||
private static boolean isMessageTagged(String message) {
|
||||
return message.endsWith(" ");
|
||||
Tag.isTagged(message) &&
|
||||
isThreadQualified(context, threadId) &&
|
||||
isExchangeQualified(context, masterSecret, recipient);
|
||||
}
|
||||
|
||||
private static boolean isThreadQualified(Context context, long threadId) {
|
||||
|
@ -23,7 +23,6 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
@ -59,6 +58,7 @@ import org.thoughtcrime.securesms.mms.AttachmentManager;
|
||||
import org.thoughtcrime.securesms.mms.AttachmentTypeSelectorAdapter;
|
||||
import org.thoughtcrime.securesms.mms.MediaTooLargeException;
|
||||
import org.thoughtcrime.securesms.mms.SlideDeck;
|
||||
import org.thoughtcrime.securesms.protocol.Tag;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
|
||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||
@ -542,14 +542,13 @@ public class ConversationActivity extends SherlockFragmentActivity
|
||||
}
|
||||
|
||||
private String getMessage() throws InvalidMessageException {
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
String rawText = composeText.getText().toString();
|
||||
String rawText = composeText.getText().toString();
|
||||
|
||||
if (rawText.length() < 1 && !attachmentManager.isAttachmentPresent())
|
||||
throw new InvalidMessageException(getString(R.string.message_is_empty_exclamation));
|
||||
|
||||
if (!sendEncrypted && sp.getBoolean(ApplicationPreferencesActivity.WHITESPACE_PREF, true) && rawText.length() <= 145)
|
||||
rawText = rawText + " ";
|
||||
if (!sendEncrypted && Tag.isTaggable(this, rawText))
|
||||
rawText = Tag.getTaggedMessage(rawText);
|
||||
|
||||
return rawText;
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.database.MmsDatabase;
|
||||
import org.thoughtcrime.securesms.database.MmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.mms.Slide;
|
||||
import org.thoughtcrime.securesms.mms.SlideDeck;
|
||||
import org.thoughtcrime.securesms.protocol.Tag;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientFactory;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
|
||||
@ -211,10 +212,11 @@ public class ConversationItem extends LinearLayout {
|
||||
private void setBodyText(MessageRecord messageRecord) {
|
||||
String body = messageRecord.getBody();
|
||||
|
||||
if (messageRecord.isKeyExchange() && messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.key_exchange_message2);
|
||||
else if (messageRecord.isProcessedKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_and_processed_key_exchange_message);
|
||||
else if (messageRecord.isStaleKeyExchange()) body = "\n" + getContext().getString(R.string.error_received_stale_key_exchange_message);
|
||||
else if (messageRecord.isKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_key_exchange_message_click_to_process);
|
||||
if (messageRecord.isKeyExchange() && messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.key_exchange_message2);
|
||||
else if (messageRecord.isProcessedKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_and_processed_key_exchange_message);
|
||||
else if (messageRecord.isStaleKeyExchange()) body = "\n" + getContext().getString(R.string.error_received_stale_key_exchange_message);
|
||||
else if (messageRecord.isKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_key_exchange_message_click_to_process);
|
||||
else if (messageRecord.isOutgoing() && Tag.isTagged(body)) body = Tag.stripTag(body);
|
||||
|
||||
bodyText.setText(body, TextView.BufferType.SPANNABLE);
|
||||
|
||||
|
36
src/org/thoughtcrime/securesms/protocol/Tag.java
Normal file
36
src/org/thoughtcrime/securesms/protocol/Tag.java
Normal file
@ -0,0 +1,36 @@
|
||||
package org.thoughtcrime.securesms.protocol;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.thoughtcrime.securesms.ApplicationPreferencesActivity;
|
||||
|
||||
public class Tag {
|
||||
|
||||
public static final String WHITESPACE_TAG = " ";
|
||||
|
||||
public static boolean isTaggable(Context context, String message) {
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
||||
return sp.getBoolean(ApplicationPreferencesActivity.WHITESPACE_PREF, true) &&
|
||||
message.matches(".*[^\\s].*") &&
|
||||
message.replaceAll("\\s+$", "").length() + WHITESPACE_TAG.length() <= 158;
|
||||
}
|
||||
|
||||
public static boolean isTagged(String message) {
|
||||
return message.matches(".*[^\\s]" + WHITESPACE_TAG + "$");
|
||||
}
|
||||
|
||||
public static String getTaggedMessage(String message) {
|
||||
return message.replaceAll("\\s+$", "") + WHITESPACE_TAG;
|
||||
}
|
||||
|
||||
public static String stripTag(String message) {
|
||||
if (isTagged(message))
|
||||
return message.substring(0, message.length() - WHITESPACE_TAG.length());
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user