aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-10-06 22:42:17 +0200
committerChristian Schneppe <christian@pix-art.de>2017-10-06 22:42:17 +0200
commitfa5082e6827b90fb11bf5917f9bbb388f8fe88cf (patch)
tree33f184a5d2846cd41e75134ce3d66dc9b3eb6e8c /src
parentae2ee6ef16f48518d09cc1ec52c852205d785af7 (diff)
save message drafts across restarts
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/pixart/messenger/entities/Conversation.java16
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java12
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