commit next message (draft) when input box gets emptied. causes tablet view to update

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 31 
1 file changed, 19 insertions(+), 12 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -1847,10 +1847,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
         }
         if (this.conversation != null) {
             final String msg = this.binding.textinput.getText().toString();
-            final boolean participating = conversation.getMode() == Conversational.MODE_SINGLE || conversation.getMucOptions().participating();
-            if (this.conversation.getStatus() != Conversation.STATUS_ARCHIVED && participating && this.conversation.setNextMessage(msg)) {
-                this.activity.xmppConnectionService.updateConversation(this.conversation);
-            }
+            storeNextMessage(msg);
             updateChatState(this.conversation, msg);
             this.activity.xmppConnectionService.getNotificationService().setOpenConversation(null);
         }
@@ -1872,10 +1869,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
         }
         Log.d(Config.LOGTAG, "ConversationFragment.saveMessageDraftStopAudioPlayer()");
         final String msg = this.binding.textinput.getText().toString();
-        final boolean participating = previousConversation.getMode() == Conversational.MODE_SINGLE || previousConversation.getMucOptions().participating();
-        if (participating && previousConversation.setNextMessage(msg)) {
-            activity.xmppConnectionService.updateConversation(previousConversation);
-        }
+        storeNextMessage(msg);
         updateChatState(this.conversation, msg);
         messageListAdapter.stopAudioPlayer();
         mediaPreviewAdapter.clearPreviews();
@@ -2191,10 +2185,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
             this.binding.textinput.append(conversation.getDraftMessage());
             conversation.setDraftMessage(null);
         }
-        final boolean participating = conversation.getMode() == Conversational.MODE_SINGLE || conversation.getMucOptions().participating();
-        if (participating && conversation.setNextMessage(this.binding.textinput.getText().toString())) {
-            activity.xmppConnectionService.databaseBackend.updateConversation(conversation);
-        }
+        storeNextMessage();
         updateChatMsgHint();
         SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(activity);
         final boolean prefScrollToBottom = p.getBoolean("scroll_to_bottom", activity.getResources().getBoolean(R.bool.scroll_to_bottom));
@@ -2206,6 +2197,19 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
         }
     }
 
+    private boolean storeNextMessage() {
+        return storeNextMessage(this.binding.textinput.getText().toString());
+    }
+
+    private boolean storeNextMessage(String msg) {
+        final boolean participating = conversation.getMode() == Conversational.MODE_SINGLE || conversation.getMucOptions().participating();
+        if (this.conversation.getStatus() != Conversation.STATUS_ARCHIVED && participating && this.conversation.setNextMessage(msg)) {
+            this.activity.xmppConnectionService.updateConversation(this.conversation);
+            return true;
+        }
+        return false;
+    }
+
     public void doneSendingPgpMessage() {
         mSendingPgpMessage.set(false);
     }
@@ -2577,6 +2581,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
         if (status == Account.State.ONLINE && conversation.setOutgoingChatState(Config.DEFAULT_CHATSTATE)) {
             service.sendChatState(conversation);
         }
+        if (storeNextMessage()) {
+            activity.onConversationsListItemUpdated();
+        }
         updateSendButton();
     }