diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java index e52bc4a89d0ec2b9b542b71e39906b153dfe7748..a5496d9c709b464113bfc49999552d9427ab8b2f 100644 --- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java +++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java @@ -623,6 +623,7 @@ public class ConversationActivity extends BriarActivity long timestamp = System.currentTimeMillis(); timestamp = Math.max(timestamp, getMinTimestampForNewMessage()); createMessage(StringUtils.toUtf8(text), timestamp); + textInputView.setText(""); } private long getMinTimestampForNewMessage() { diff --git a/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java b/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java index 019aff689978c3354668d9af1e38cfebc26d8768..f5c9c32a635bead8e019289a12515f62f1964471 100644 --- a/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java +++ b/briar-android/src/org/briarproject/android/introduction/IntroductionMessageFragment.java @@ -14,6 +14,7 @@ import org.briarproject.R; import org.briarproject.android.ActivityComponent; import org.briarproject.android.fragment.BaseFragment; import org.briarproject.android.view.TextInputView; +import org.briarproject.android.view.TextInputView.TextInputListener; import org.briarproject.api.FormatException; import org.briarproject.api.contact.Contact; import org.briarproject.api.contact.ContactId; @@ -37,7 +38,7 @@ import static java.util.logging.Level.WARNING; import static org.briarproject.api.introduction.IntroductionConstants.MAX_INTRODUCTION_MESSAGE_LENGTH; public class IntroductionMessageFragment extends BaseFragment - implements TextInputView.TextInputListener { + implements TextInputListener { public static final String TAG = IntroductionMessageFragment.class.getName(); @@ -56,7 +57,8 @@ public class IntroductionMessageFragment extends BaseFragment @Inject protected volatile IntroductionManager introductionManager; - public static IntroductionMessageFragment newInstance(int contactId1, int contactId2) { + public static IntroductionMessageFragment newInstance(int contactId1, + int contactId2) { Bundle args = new Bundle(); args.putInt(CONTACT_ID_1, contactId1); args.putInt(CONTACT_ID_2, contactId2); diff --git a/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java b/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java index 991cdf5265f2b98d2f52fd8deac99d861fefeaa6..c2bba1a65c5b07fbdd838f576937a0228907fd13 100644 --- a/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java +++ b/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java @@ -24,12 +24,13 @@ import javax.inject.Inject; import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; import static android.widget.Toast.LENGTH_SHORT; +import static org.briarproject.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH; public class CreateGroupActivity extends ContactSelectorActivity implements CreateGroupListener, MessageFragmentListener { @Inject - protected CreateGroupController controller; + CreateGroupController controller; @Override public void injectActivity(ActivityComponent component) { @@ -144,6 +145,11 @@ public class CreateGroupActivity extends ContactSelectorActivity implements return true; } + @Override + public int getMaximumMessageLength() { + return MAX_MESSAGE_BODY_LENGTH; + } + private void openNewGroup() { Intent i = new Intent(this, GroupActivity.class); i.putExtra(GROUP_ID, groupId.getBytes()); diff --git a/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupMessageFragment.java b/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupMessageFragment.java index d2a6600d494781f0c67b0ef970b87e3d9da1706d..a261ce0167313adb3b10585127d2fcfc2856aa0e 100644 --- a/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupMessageFragment.java +++ b/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupMessageFragment.java @@ -1,21 +1,24 @@ package org.briarproject.android.privategroup.creation; +import android.support.annotation.StringRes; + import org.briarproject.R; import org.briarproject.android.ActivityComponent; import org.briarproject.android.sharing.BaseMessageFragment; - public class CreateGroupMessageFragment extends BaseMessageFragment { private final static String TAG = CreateGroupMessageFragment.class.getName(); @Override + @StringRes protected int getButtonText() { return R.string.groups_create_group_invitation_button; } @Override + @StringRes protected int getHintText() { return R.string.forum_share_message; } diff --git a/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java b/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java index 251846f6444300e2592d0fa120963bfb0186d879..b988c094456dd11f4a64815299230576b02f645c 100644 --- a/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java +++ b/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java @@ -3,6 +3,7 @@ package org.briarproject.android.sharing; import android.content.Context; import android.os.Bundle; import android.support.annotation.StringRes; +import android.support.design.widget.Snackbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -11,6 +12,9 @@ import org.briarproject.R; import org.briarproject.android.fragment.BaseFragment; import org.briarproject.android.view.LargeTextInputView; import org.briarproject.android.view.TextInputView.TextInputListener; +import org.briarproject.util.StringUtils; + +import static android.support.design.widget.Snackbar.LENGTH_SHORT; import static org.briarproject.api.sharing.SharingConstants.MAX_INVITATION_MESSAGE_LENGTH; import static org.briarproject.util.StringUtils.truncateUtf8; @@ -46,8 +50,10 @@ public abstract class BaseMessageFragment extends BaseFragment listener.setTitle(res); } - protected abstract @StringRes int getButtonText(); - protected abstract @StringRes int getHintText(); + @StringRes + protected abstract int getButtonText(); + @StringRes + protected abstract int getHintText(); @Override public void onStart() { @@ -57,6 +63,11 @@ public abstract class BaseMessageFragment extends BaseFragment @Override public void onSendClick(String msg) { + if (StringUtils.isTooLong(msg, listener.getMaximumMessageLength())) { + Snackbar.make(message, R.string.text_too_long, LENGTH_SHORT).show(); + return; + } + // disable button to prevent accidental double actions message.setSendButtonEnabled(false); message.hideSoftKeyboard(); @@ -77,6 +88,8 @@ public abstract class BaseMessageFragment extends BaseFragment /** Returns true when the button click has been consumed. */ boolean onButtonClick(String message); + int getMaximumMessageLength(); + } } diff --git a/briar-android/src/org/briarproject/android/sharing/ShareBlogActivity.java b/briar-android/src/org/briarproject/android/sharing/ShareBlogActivity.java index d4ad59a6a72ec2ac0bf74f6e379b9dfd58f98c2d..7d5cdeef3e63ae5e211dc9dabbe283bafd0f654f 100644 --- a/briar-android/src/org/briarproject/android/sharing/ShareBlogActivity.java +++ b/briar-android/src/org/briarproject/android/sharing/ShareBlogActivity.java @@ -10,11 +10,13 @@ import org.briarproject.api.sync.GroupId; import javax.inject.Inject; +import static org.briarproject.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH; + public class ShareBlogActivity extends ShareActivity { // Fields that are accessed from background threads must be volatile @Inject - protected volatile BlogSharingManager blogSharingManager; + volatile BlogSharingManager blogSharingManager; @Override BaseMessageFragment getMessageFragment() { @@ -42,4 +44,8 @@ public class ShareBlogActivity extends ShareActivity { return R.string.blogs_sharing_error; } + @Override + public int getMaximumMessageLength() { + return MAX_MESSAGE_BODY_LENGTH; + } } diff --git a/briar-android/src/org/briarproject/android/sharing/ShareBlogMessageFragment.java b/briar-android/src/org/briarproject/android/sharing/ShareBlogMessageFragment.java index 6d4dfb7b26020cddd67049088972ef8723ea633b..ccee4d8fecb028dcbf9e2ec970fd2115f7e5c2af 100644 --- a/briar-android/src/org/briarproject/android/sharing/ShareBlogMessageFragment.java +++ b/briar-android/src/org/briarproject/android/sharing/ShareBlogMessageFragment.java @@ -1,6 +1,7 @@ package org.briarproject.android.sharing; import android.os.Bundle; +import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -25,11 +26,13 @@ public class ShareBlogMessageFragment extends BaseMessageFragment { } @Override + @StringRes protected int getButtonText() { return R.string.blogs_sharing_button; } @Override + @StringRes protected int getHintText() { return R.string.forum_share_message; } diff --git a/briar-android/src/org/briarproject/android/sharing/ShareForumActivity.java b/briar-android/src/org/briarproject/android/sharing/ShareForumActivity.java index 89093a2b0bf33ae81548a397cc44b90152f43654..492e3615b23b4903a61d433d04779170e7e557f4 100644 --- a/briar-android/src/org/briarproject/android/sharing/ShareForumActivity.java +++ b/briar-android/src/org/briarproject/android/sharing/ShareForumActivity.java @@ -10,11 +10,13 @@ import org.briarproject.api.sync.GroupId; import javax.inject.Inject; +import static org.briarproject.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH; + public class ShareForumActivity extends ShareActivity { // Fields that are accessed from background threads must be volatile @Inject - protected volatile ForumSharingManager forumSharingManager; + volatile ForumSharingManager forumSharingManager; @Override BaseMessageFragment getMessageFragment() { @@ -42,4 +44,8 @@ public class ShareForumActivity extends ShareActivity { return R.string.forum_share_error; } + @Override + public int getMaximumMessageLength() { + return MAX_MESSAGE_BODY_LENGTH; + } } diff --git a/briar-android/src/org/briarproject/android/sharing/ShareForumMessageFragment.java b/briar-android/src/org/briarproject/android/sharing/ShareForumMessageFragment.java index 7824567a3de7e8b2bac24a3b0bbf00122d121bc9..a3faeb630de35101d606b194260be9aa3971c100 100644 --- a/briar-android/src/org/briarproject/android/sharing/ShareForumMessageFragment.java +++ b/briar-android/src/org/briarproject/android/sharing/ShareForumMessageFragment.java @@ -1,6 +1,7 @@ package org.briarproject.android.sharing; import android.os.Bundle; +import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -25,11 +26,13 @@ public class ShareForumMessageFragment extends BaseMessageFragment { } @Override + @StringRes protected int getButtonText() { return R.string.forum_share_button; } @Override + @StringRes protected int getHintText() { return R.string.forum_share_message; } diff --git a/briar-android/src/org/briarproject/android/threaded/ThreadListActivity.java b/briar-android/src/org/briarproject/android/threaded/ThreadListActivity.java index 6a1ec4883dfcc6ea3c8563aef42f556741b41de0..a8eefd250f474069e20a40fb458af1013c43976f 100644 --- a/briar-android/src/org/briarproject/android/threaded/ThreadListActivity.java +++ b/briar-android/src/org/briarproject/android/threaded/ThreadListActivity.java @@ -253,6 +253,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, I extends ThreadI replyItem != null ? replyItem.getId() : null, handler); textInput.hideSoftKeyboard(); textInput.setVisibility(GONE); + textInput.setText(""); adapter.setReplyItem(null); } diff --git a/briar-android/src/org/briarproject/android/view/TextInputView.java b/briar-android/src/org/briarproject/android/view/TextInputView.java index dade999a0863fa0bf121e257b3e96cc550332cd5..ff75c84bfd064aaa22fb115e82fba23494e993be 100644 --- a/briar-android/src/org/briarproject/android/view/TextInputView.java +++ b/briar-android/src/org/briarproject/android/view/TextInputView.java @@ -101,7 +101,6 @@ public class TextInputView extends KeyboardAwareLinearLayout public void onClick(View v) { if (listener != null) { listener.onSendClick(ui.editText.getText().toString()); - ui.editText.setText(""); } } });