handle non participating mucs a bit better

This commit is contained in:
Daniel Gultsch 2018-07-09 11:35:30 +02:00
parent 728c86222d
commit 9bdebb81ba
4 changed files with 25 additions and 7 deletions

View File

@ -1535,7 +1535,7 @@ public class XmppConnectionService extends Service {
} else { } else {
for (Conversation conversation : getConversations()) { for (Conversation conversation : getConversations()) {
if (conversation.getMode() == Conversation.MODE_SINGLE if (conversation.getMode() == Conversation.MODE_SINGLE
|| conversation.getAccount().httpUploadAvailable()) { || (conversation.getAccount().httpUploadAvailable() && conversation.getMucOptions().participating())) {
list.add(conversation); list.add(conversation);
} }
} }

View File

@ -69,6 +69,7 @@ import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Blockable; import eu.siacs.conversations.entities.Blockable;
import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Conversational;
import eu.siacs.conversations.entities.DownloadableFile; import eu.siacs.conversations.entities.DownloadableFile;
import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.entities.Message;
import eu.siacs.conversations.entities.MucOptions; import eu.siacs.conversations.entities.MucOptions;
@ -1775,7 +1776,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
} }
if (this.conversation != null) { if (this.conversation != null) {
final String msg = this.binding.textinput.getText().toString(); 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); this.activity.xmppConnectionService.updateConversation(this.conversation);
} }
updateChatState(this.conversation, msg); updateChatState(this.conversation, msg);
@ -1799,7 +1801,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
} }
Log.d(Config.LOGTAG, "ConversationFragment.saveMessageDraftStopAudioPlayer()"); Log.d(Config.LOGTAG, "ConversationFragment.saveMessageDraftStopAudioPlayer()");
final String msg = this.binding.textinput.getText().toString(); 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); activity.xmppConnectionService.updateConversation(previousConversation);
} }
updateChatState(this.conversation, msg); updateChatState(this.conversation, msg);
@ -1855,7 +1858,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.textSendButton.setContentDescription(activity.getString(R.string.send_message_to_x, conversation.getName()));
this.binding.textinput.setKeyboardListener(null); this.binding.textinput.setKeyboardListener(null);
this.binding.textinput.setText(""); 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); this.binding.textinput.setKeyboardListener(this);
messageListAdapter.updatePreferences(); messageListAdapter.updatePreferences();
refresh(false); refresh(false);
@ -2077,6 +2083,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
} }
updateSendButton(); updateSendButton();
updateEditablity(); updateEditablity();
activity.invalidateOptionsMenu();
} }
} }
} }
@ -2088,8 +2095,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
this.binding.textinput.append(conversation.getDraftMessage()); this.binding.textinput.append(conversation.getDraftMessage());
conversation.setDraftMessage(null); conversation.setDraftMessage(null);
} }
if (conversation.setNextMessage(this.binding.textinput.getText().toString())) { final boolean participating = conversation.getMode() == Conversational.MODE_SINGLE || conversation.getMucOptions().participating();
activity.xmppConnectionService.updateConversation(conversation); if (participating && conversation.setNextMessage(this.binding.textinput.getText().toString())) {
activity.xmppConnectionService.databaseBackend.updateConversation(conversation);
} }
updateChatMsgHint(); updateChatMsgHint();
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(activity); SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(activity);
@ -2117,6 +2125,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
this.binding.textinput.setFocusableInTouchMode(canWrite); this.binding.textinput.setFocusableInTouchMode(canWrite);
this.binding.textSendButton.setEnabled(canWrite); this.binding.textSendButton.setEnabled(canWrite);
this.binding.textinput.setCursorVisible(canWrite); this.binding.textinput.setCursorVisible(canWrite);
this.binding.textinput.setEnabled(canWrite);
} }
public void updateSendButton() { public void updateSendButton() {

View File

@ -42,6 +42,7 @@ import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.OmemoSetting; import eu.siacs.conversations.crypto.OmemoSetting;
import eu.siacs.conversations.crypto.axolotl.AxolotlService; import eu.siacs.conversations.crypto.axolotl.AxolotlService;
import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Conversational;
import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.entities.Message;
public class ConversationMenuConfigurator { public class ConversationMenuConfigurator {
@ -70,6 +71,14 @@ public class ConversationMenuConfigurator {
public static void configureEncryptionMenu(@NonNull Conversation conversation, Menu menu) { public static void configureEncryptionMenu(@NonNull Conversation conversation, Menu menu) {
final MenuItem menuSecure = menu.findItem(R.id.action_security); 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 none = menu.findItem(R.id.encryption_choice_none);
final MenuItem pgp = menu.findItem(R.id.encryption_choice_pgp); final MenuItem pgp = menu.findItem(R.id.encryption_choice_pgp);
final MenuItem axolotl = menu.findItem(R.id.encryption_choice_axolotl); final MenuItem axolotl = menu.findItem(R.id.encryption_choice_axolotl);

View File

@ -149,7 +149,7 @@ public class EditMessage extends EmojiWrapperEditText {
public InputConnection onCreateInputConnection(EditorInfo editorInfo) { public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
final InputConnection ic = super.onCreateInputConnection(editorInfo); final InputConnection ic = super.onCreateInputConnection(editorInfo);
if (mimeTypes != null && mCommitContentListener != null) { if (mimeTypes != null && mCommitContentListener != null && ic != null) {
EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes); EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes);
return InputConnectionCompat.createWrapper(ic, editorInfo, (inputContentInfo, flags, opts) -> EditMessage.this.mCommitContentListener.onCommitContent(inputContentInfo, flags, opts, mimeTypes)); return InputConnectionCompat.createWrapper(ic, editorInfo, (inputContentInfo, flags, opts) -> EditMessage.this.mCommitContentListener.onCommitContent(inputContentInfo, flags, opts, mimeTypes));
} else { } else {