diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-10-06 22:42:17 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-10-06 22:42:17 +0200 |
commit | fa5082e6827b90fb11bf5917f9bbb388f8fe88cf (patch) | |
tree | 33f184a5d2846cd41e75134ce3d66dc9b3eb6e8c | |
parent | ae2ee6ef16f48518d09cc1ec52c852205d785af7 (diff) |
save message drafts across restarts
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Conversation.java | 16 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 12 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Conversation.java b/src/main/java/de/pixart/messenger/entities/Conversation.java index 5744d67a7..833b1eb3b 100644 --- a/src/main/java/de/pixart/messenger/entities/Conversation.java +++ b/src/main/java/de/pixart/messenger/entities/Conversation.java @@ -58,6 +58,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl public static final String ATTRIBUTE_ALWAYS_NOTIFY = "always_notify"; private static final String ATTRIBUTE_CRYPTO_TARGETS = "crypto_targets"; public static final String ATTRIBUTE_LAST_CLEAR_HISTORY = "last_clear_history"; + public static final String ATTRIBUTE_NEXT_MESSAGE = "next_message"; private String draftMessage; private String name; @@ -80,8 +81,6 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl private transient String otrFingerprint = null; private Smp mSmp = new Smp(); - private String nextMessage; - private transient MucOptions mucOptions = null; private byte[] symmetricKey; @@ -788,19 +787,18 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl } public String getNextMessage() { - if (this.nextMessage == null) { - return ""; - } else { - return this.nextMessage; - } + final String nextMessage = getAttribute(ATTRIBUTE_NEXT_MESSAGE); + return nextMessage == null ? "" : nextMessage; } public boolean smpRequested() { return smp().status == Smp.STATUS_CONTACT_REQUESTED; } - public void setNextMessage(String message) { - this.nextMessage = message; + public boolean setNextMessage(String message) { + boolean changed = !getNextMessage().equals(message); + this.setAttribute(ATTRIBUTE_NEXT_MESSAGE, message); + return changed; } public void setSymmetricKey(byte[] key) { diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index ff023997f..d1a007e3b 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -909,7 +909,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } if (this.conversation != null) { final String msg = mEditMessage.getText().toString(); - this.conversation.setNextMessage(msg); + if (this.conversation.setNextMessage(msg)) { + activity.xmppConnectionService.updateConversation(this.conversation); + } updateChatState(this.conversation, msg); } } @@ -930,7 +932,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa setupIme(); if (this.conversation != null) { final String msg = mEditMessage.getText().toString(); - this.conversation.setNextMessage(msg); + if (this.conversation.setNextMessage(msg)) { + activity.xmppConnectionService.updateConversation(conversation); + } if (this.conversation != conversation) { updateChatState(this.conversation, msg); messageListAdapter.stopAudioPlayer(); @@ -1173,7 +1177,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa mEditMessage.append(conversation.getDraftMessage()); conversation.setDraftMessage(null); } - conversation.setNextMessage(mEditMessage.getText().toString()); + if (conversation.setNextMessage(mEditMessage.getText().toString())) { + activity.xmppConnectionService.updateConversation(conversation); + } updateChatMsgHint(); new Handler().post(new Runnable() { @Override |