diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java b/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java index 0b1d6f4653..f49ef644b1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java @@ -73,6 +73,7 @@ public class ComposeText extends EmojiEditText { @Nullable private InputPanel.MediaListener mediaListener; @Nullable private CursorPositionChangedListener cursorPositionChangedListener; @Nullable private InlineQueryChangedListener inlineQueryChangedListener; + @Nullable private StylingChangedListener stylingChangedListener; public ComposeText(Context context) { super(context); @@ -223,6 +224,10 @@ public class ComposeText extends EmojiEditText { mentionValidatorWatcher.setMentionValidator(mentionValidator); } + public void setStylingChangedListener(@Nullable StylingChangedListener listener) { + stylingChangedListener = listener; + } + private boolean isLandscape() { return getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; } @@ -579,6 +584,10 @@ public class ComposeText extends EmojiEditText { Selection.setSelection(getText(), end); + if (stylingChangedListener != null) { + stylingChangedListener.onStylingChanged(); + } + return true; } @@ -628,4 +637,7 @@ public class ComposeText extends EmojiEditText { void onCursorPositionChanged(int start, int end); } + public interface StylingChangedListener { + void onStylingChanged(); + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java index cf4808670c..87e467de0f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -862,6 +862,7 @@ public class ConversationParentFragment extends Fragment } composeText.addTextChangedListener(typingTextWatcher); + composeText.setStylingChangedListener(typingTextWatcher); composeText.setSelection(composeText.length(), composeText.length()); } }); @@ -3865,7 +3866,7 @@ public class ConversationParentFragment extends Fragment } } - private class ComposeTextWatcher extends SimpleTextWatcher { + private class ComposeTextWatcher extends SimpleTextWatcher implements ComposeText.StylingChangedListener { private boolean typingStatusEnabled = true; @@ -3906,6 +3907,11 @@ public class ConversationParentFragment extends Fragment public void setTypingStatusEnabled(boolean enabled) { this.typingStatusEnabled = enabled; } + + @Override + public void onStylingChanged() { + handleSaveDraftOnTextChange(composeText.getTextTrimmed()); + } } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index be36bb5d80..e565394551 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -563,6 +563,7 @@ class ConversationFragment : setCursorPositionChangedListener(composeTextEventsListener) setOnKeyListener(composeTextEventsListener) addTextChangedListener(composeTextEventsListener) + setStylingChangedListener(composeTextEventsListener) setOnClickListener(composeTextEventsListener) onFocusChangeListener = composeTextEventsListener } @@ -2667,7 +2668,8 @@ class ConversationFragment : View.OnClickListener, TextWatcher, OnFocusChangeListener, - ComposeText.CursorPositionChangedListener { + ComposeText.CursorPositionChangedListener, + ComposeText.StylingChangedListener { private var beforeLength = 0 private var previousText = "" @@ -2746,6 +2748,10 @@ class ConversationFragment : previousText = text } + + override fun onStylingChanged() { + handleSaveDraftOnTextChange(composeText.textTrimmed) + } } //endregion Compose + Send Callbacks