From cc138052977ae7d72b01661fb35b4ac42b1d53fb Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Mon, 9 Jul 2018 22:37:17 +0200 Subject: handle non participating mucs a bit better --- .../messenger/services/XmppConnectionService.java | 2 +- .../de/pixart/messenger/ui/ConversationFragment.java | 19 ++++++++++++++----- .../ui/util/ConversationMenuConfigurator.java | 6 ++++++ .../de/pixart/messenger/ui/widget/EditMessage.java | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 6730c00b1..e149821ec 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -1722,7 +1722,7 @@ public class XmppConnectionService extends Service { } else { for (Conversation conversation : getConversations()) { if (conversation.getMode() == Conversation.MODE_SINGLE - || conversation.getAccount().httpUploadAvailable()) { + || (conversation.getAccount().httpUploadAvailable() && conversation.getMucOptions().participating())) { list.add(conversation); } } diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index 4ec01434d..efb342f4d 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -82,6 +82,7 @@ import de.pixart.messenger.entities.Account; import de.pixart.messenger.entities.Blockable; import de.pixart.messenger.entities.Contact; import de.pixart.messenger.entities.Conversation; +import de.pixart.messenger.entities.Conversational; import de.pixart.messenger.entities.DownloadableFile; import de.pixart.messenger.entities.Message; import de.pixart.messenger.entities.MucOptions; @@ -2050,7 +2051,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } if (this.conversation != null) { final String msg = this.binding.textinput.getText().toString(); - if (this.conversation.getStatus() != Conversation.STATUS_ARCHIVED && this.conversation.setNextMessage(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); } updateChatState(this.conversation, msg); @@ -2074,7 +2076,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } Log.d(Config.LOGTAG, "ConversationFragment.saveMessageDraftStopAudioPlayer()"); final String msg = this.binding.textinput.getText().toString(); - if (previousConversation.setNextMessage(msg)) { + final boolean participating = previousConversation.getMode() == Conversational.MODE_SINGLE || previousConversation.getMucOptions().participating(); + if (participating && previousConversation.setNextMessage(msg)) { activity.xmppConnectionService.updateConversation(previousConversation); } updateChatState(this.conversation, msg); @@ -2130,7 +2133,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke this.binding.textSendButton.setContentDescription(activity.getString(R.string.send_message_to_x, conversation.getName())); this.binding.textinput.setKeyboardListener(null); this.binding.textinput.setText(""); - this.binding.textinput.append(this.conversation.getNextMessage()); + final boolean participating = conversation.getMode() == Conversational.MODE_SINGLE || conversation.getMucOptions().participating(); + if (participating) { + this.binding.textinput.append(this.conversation.getNextMessage()); + } this.binding.textinput.setKeyboardListener(this); messageListAdapter.updatePreferences(); refresh(false); @@ -2429,6 +2435,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } updateSendButton(); updateEditablity(); + activity.invalidateOptionsMenu(); } } } @@ -2440,8 +2447,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke this.binding.textinput.append(conversation.getDraftMessage()); conversation.setDraftMessage(null); } - if (conversation.setNextMessage(this.binding.textinput.getText().toString())) { - activity.xmppConnectionService.updateConversation(conversation); + 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); } updateChatMsgHint(); SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(activity); @@ -2469,6 +2477,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke this.binding.textinput.setFocusableInTouchMode(canWrite); this.binding.textSendButton.setEnabled(canWrite); this.binding.textinput.setCursorVisible(canWrite); + this.binding.textinput.setEnabled(canWrite); } public void updateSendButton() { diff --git a/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java b/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java index eb7217b95..03f7638e3 100644 --- a/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java +++ b/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java @@ -40,6 +40,7 @@ import de.pixart.messenger.R; import de.pixart.messenger.crypto.OmemoSetting; import de.pixart.messenger.crypto.axolotl.AxolotlService; import de.pixart.messenger.entities.Conversation; +import de.pixart.messenger.entities.Conversational; import de.pixart.messenger.entities.Message; public class ConversationMenuConfigurator { @@ -71,6 +72,11 @@ public class ConversationMenuConfigurator { public static void configureEncryptionMenu(@NonNull Conversation conversation, Menu menu) { final MenuItem menuSecure = menu.findItem(R.id.action_security); + final boolean participating = conversation.getMode() == Conversational.MODE_SINGLE || conversation.getMucOptions().participating(); + if (!participating) { + menuSecure.setVisible(false); + return; + } final MenuItem none = menu.findItem(R.id.encryption_choice_none); final MenuItem otr = menu.findItem(R.id.encryption_choice_otr); final MenuItem pgp = menu.findItem(R.id.encryption_choice_pgp); diff --git a/src/main/java/de/pixart/messenger/ui/widget/EditMessage.java b/src/main/java/de/pixart/messenger/ui/widget/EditMessage.java index 2e80decd8..d95a4705f 100644 --- a/src/main/java/de/pixart/messenger/ui/widget/EditMessage.java +++ b/src/main/java/de/pixart/messenger/ui/widget/EditMessage.java @@ -147,7 +147,7 @@ public class EditMessage extends EmojiWrapperEditText { public InputConnection onCreateInputConnection(EditorInfo editorInfo) { final InputConnection ic = super.onCreateInputConnection(editorInfo); - if (mimeTypes != null && mCommitContentListener != null) { + if (mimeTypes != null && mCommitContentListener != null && ic != null) { EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes); return InputConnectionCompat.createWrapper(ic, editorInfo, (inputContentInfo, flags, opts) -> EditMessage.this.mCommitContentListener.onCommitContent(inputContentInfo, flags, opts, mimeTypes)); } else { -- cgit v1.2.3