M src/main/java/eu/siacs/conversations/entities/Conversation.java => src/main/java/eu/siacs/conversations/entities/Conversation.java +2 -7
@@ 749,7 749,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
return false;
}
} else {
- String prev = this.attributes.getString(key);
+ final String prev = this.attributes.optString(key, null);
this.attributes.put(key, value);
return !value.equals(prev);
}
@@ 769,7 769,6 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
this.attributes.put(key, array);
return true;
} catch (JSONException e) {
- e.printStackTrace();
return false;
}
}
@@ 777,11 776,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
public String getAttribute(String key) {
synchronized (this.attributes) {
- try {
- return this.attributes.getString(key);
- } catch (JSONException e) {
- return null;
- }
+ return this.attributes.optString(key, null);
}
}
M src/main/java/eu/siacs/conversations/entities/MucOptions.java => src/main/java/eu/siacs/conversations/entities/MucOptions.java +19 -6
@@ 2,6 2,7 @@ package eu.siacs.conversations.entities;
import android.annotation.SuppressLint;
import android.support.annotation.NonNull;
+import android.util.Log;
import java.util.ArrayList;
import java.util.Collections;
@@ 377,9 378,10 @@ public class MucOptions {
public boolean updateConfiguration(ServiceDiscoveryResult serviceDiscoveryResult) {
this.serviceDiscoveryResult = serviceDiscoveryResult;
String name;
- Field roomInfoName = getRoomInfoForm().getFieldByName("muc#roominfo_name");
- if (roomInfoName != null) {
- name = roomInfoName.getValue();
+ Field roomConfigName = getRoomInfoForm().getFieldByName("muc#roomconfig_roomname");
+ if (roomConfigName != null) {
+ Log.d(Config.LOGTAG,"value of room config name "+roomConfigName.getValue());
+ name = roomConfigName.getValue();
} else {
List<ServiceDiscoveryResult.Identity> identities = serviceDiscoveryResult.getIdentities();
String identityName = identities.size() > 0 ? identities.get(0).getName() : null;
@@ 415,7 417,7 @@ public class MucOptions {
}
public boolean canInvite() {
- Field field = getRoomInfoForm().getFieldByName("muc#roominfo_allowinvites");
+ Field field = getRoomInfoForm().getFieldByName("muc#roomconfig_allowinvites");
return !membersOnly() || self.getRole().ranks(Role.MODERATOR) || (field != null && "1".equals(field.getValue()));
}
@@ 425,8 427,19 @@ public class MucOptions {
}
public boolean allowPm() {
- Field field = getRoomInfoForm().getFieldByName("muc#roominfo_allowpm");
- return field != null && "1".equals(field.getValue());
+ final Field field = getRoomInfoForm().getFieldByName("muc#roomconfig_allowpm");
+ if (field == null) {
+ return true; //fall back if field does not exists
+ }
+ if ("anyone".equals(field.getValue())) {
+ return true;
+ } else if ("participants".equals(field.getValue())) {
+ return self.getRole().ranks(Role.PARTICIPANT);
+ } else if ("moderators".equals(field.getValue())) {
+ return self.getRole().ranks(Role.MODERATOR);
+ } else {
+ return false;
+ }
}
public boolean participating() {