Change summary
src/main/java/eu/siacs/conversations/entities/MucOptions.java | 5
src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java | 6
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 40
src/main/res/values/strings.xml | 1
4 files changed, 28 insertions(+), 24 deletions(-)
Detailed changes
@@ -397,6 +397,11 @@ public class MucOptions {
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() {
return !online()
|| self.getRole().ranks(Role.PARTICIPANT)
@@ -462,7 +462,11 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
}
return true;
case R.id.send_private_message:
- privateMsgInMuc(mConversation,mSelectedUser.getName());
+ if (mConversation.getMucOptions().allowPm()) {
+ privateMsgInMuc(mConversation,mSelectedUser.getName());
+ } else {
+ Toast.makeText(this, R.string.private_messages_are_disabled, Toast.LENGTH_SHORT).show();
+ }
return true;
case R.id.invite:
xmppConnectionService.directInvite(mConversation, jid);
@@ -609,34 +609,28 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
}
});
- messageListAdapter
- .setOnContactPictureLongClicked(new OnContactPictureLongClicked() {
-
- @Override
- public void onContactPictureLongClicked(Message message) {
- if (message.getStatus() <= Message.STATUS_RECEIVED) {
- if (message.getConversation().getMode() == Conversation.MODE_MULTI) {
- Jid user = message.getCounterpart();
- if (user != null && !user.isBareJid()) {
- if (message.getConversation().getMucOptions().isUserInRoom(user)) {
- privateMessageWith(user);
- } else {
- Toast.makeText(activity, activity.getString(R.string.user_has_left_conference, user.getResourcepart()), Toast.LENGTH_SHORT).show();
- }
- }
- }
+ messageListAdapter.setOnContactPictureLongClicked(message -> {
+ if (message.getStatus() <= Message.STATUS_RECEIVED) {
+ 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();
+ if (user != null && !user.isBareJid()) {
+ if (mucOptions.isUserInRoom(user)) {
+ privateMessageWith(user);
} else {
- activity.showQrCode();
+ Toast.makeText(activity, activity.getString(R.string.user_has_left_conference, user.getResourcepart()), Toast.LENGTH_SHORT).show();
}
}
- });
- messageListAdapter.setOnQuoteListener(new MessageAdapter.OnQuoteListener() {
-
- @Override
- public void onQuote(String text) {
- quoteText(text);
+ }
+ } else {
+ activity.showQrCode();
}
});
+ messageListAdapter.setOnQuoteListener(text -> quoteText(text));
messagesView.setAdapter(messageListAdapter);
registerForContextMenu(messagesView);
@@ -729,4 +729,5 @@
<string name="copy_to_clipboard">Copy to clipboard</string>
<string name="message_copied_to_clipboard">Message copied to clipboard</string>
<string name="message">Message</string>
+ <string name="private_messages_are_disabled">Private messages are disabled</string>
</resources>