show warning toast if PM is disabled in MUC

This commit is contained in:
Daniel Gultsch 2018-01-18 17:35:42 +01:00
parent 5d11fe7dc6
commit 6663eb0a12
4 changed files with 28 additions and 24 deletions

View File

@ -397,6 +397,11 @@ public class MucOptions {
return self.getRole().ranks(Role.MODERATOR) || (field != null && "1".equals(field.getValue())); return self.getRole().ranks(Role.MODERATOR) || (field != null && "1".equals(field.getValue()));
} }
public boolean allowPm() {
Field field = this.form.getFieldByName("muc#roomconfig_allowpm");
return field == null || "1".equals(field.getValue());
}
public boolean participating() { public boolean participating() {
return !online() return !online()
|| self.getRole().ranks(Role.PARTICIPANT) || self.getRole().ranks(Role.PARTICIPANT)

View File

@ -462,7 +462,11 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
} }
return true; return true;
case R.id.send_private_message: case R.id.send_private_message:
if (mConversation.getMucOptions().allowPm()) {
privateMsgInMuc(mConversation,mSelectedUser.getName()); privateMsgInMuc(mConversation,mSelectedUser.getName());
} else {
Toast.makeText(this, R.string.private_messages_are_disabled, Toast.LENGTH_SHORT).show();
}
return true; return true;
case R.id.invite: case R.id.invite:
xmppConnectionService.directInvite(mConversation, jid); xmppConnectionService.directInvite(mConversation, jid);

View File

@ -609,16 +609,17 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
} }
} }
}); });
messageListAdapter messageListAdapter.setOnContactPictureLongClicked(message -> {
.setOnContactPictureLongClicked(new OnContactPictureLongClicked() {
@Override
public void onContactPictureLongClicked(Message message) {
if (message.getStatus() <= Message.STATUS_RECEIVED) { if (message.getStatus() <= Message.STATUS_RECEIVED) {
if (message.getConversation().getMode() == Conversation.MODE_MULTI) { if (message.getConversation().getMode() == Conversation.MODE_MULTI) {
final MucOptions mucOptions = conversation.getMucOptions();
if (!mucOptions.allowPm()) {
Toast.makeText(activity, R.string.private_messages_are_disabled, Toast.LENGTH_SHORT).show();
return;
}
Jid user = message.getCounterpart(); Jid user = message.getCounterpart();
if (user != null && !user.isBareJid()) { if (user != null && !user.isBareJid()) {
if (message.getConversation().getMucOptions().isUserInRoom(user)) { if (mucOptions.isUserInRoom(user)) {
privateMessageWith(user); privateMessageWith(user);
} else { } else {
Toast.makeText(activity, activity.getString(R.string.user_has_left_conference, user.getResourcepart()), Toast.LENGTH_SHORT).show(); Toast.makeText(activity, activity.getString(R.string.user_has_left_conference, user.getResourcepart()), Toast.LENGTH_SHORT).show();
@ -628,15 +629,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
} else { } else {
activity.showQrCode(); activity.showQrCode();
} }
}
});
messageListAdapter.setOnQuoteListener(new MessageAdapter.OnQuoteListener() {
@Override
public void onQuote(String text) {
quoteText(text);
}
}); });
messageListAdapter.setOnQuoteListener(text -> quoteText(text));
messagesView.setAdapter(messageListAdapter); messagesView.setAdapter(messageListAdapter);
registerForContextMenu(messagesView); registerForContextMenu(messagesView);

View File

@ -729,4 +729,5 @@
<string name="copy_to_clipboard">Copy to clipboard</string> <string name="copy_to_clipboard">Copy to clipboard</string>
<string name="message_copied_to_clipboard">Message copied to clipboard</string> <string name="message_copied_to_clipboard">Message copied to clipboard</string>
<string name="message">Message</string> <string name="message">Message</string>
<string name="private_messages_are_disabled">Private messages are disabled</string>
</resources> </resources>