From 1b6bf807de1b442687ec5f9982e551bb16923f04 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 13 Apr 2018 23:11:28 +0200 Subject: persist some muc configurations --- .../de/pixart/messenger/entities/MucOptions.java | 29 ++++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src/main/java/de/pixart/messenger/entities/MucOptions.java') diff --git a/src/main/java/de/pixart/messenger/entities/MucOptions.java b/src/main/java/de/pixart/messenger/entities/MucOptions.java index 25d059c93..255eecc79 100644 --- a/src/main/java/de/pixart/messenger/entities/MucOptions.java +++ b/src/main/java/de/pixart/messenger/entities/MucOptions.java @@ -373,12 +373,24 @@ public class MucOptions { this.self = new User(this, createJoinJid(getProposedNick())); } - public void updateFeatures(ArrayList features) { + public boolean updateConfiguration(List features, Data data) { + updateFeatures(features); + updateFormData(data == null ? new Data() : data); + Field allowPmField = this.form.getFieldByName("muc#roomconfig_allowpm"); + boolean changed = false; + changed |= conversation.setAttribute(Conversation.ATTRIBUTE_ALLOW_PM, allowPmField == null || "1".equals(allowPmField.getValue())); + changed |= conversation.setAttribute(Conversation.ATTRIBUTE_MEMBERS_ONLY, this.hasFeature("muc_membersonly")); + changed |= conversation.setAttribute(Conversation.ATTRIBUTE_MODERATED, this.hasFeature("muc_moderated")); + changed |= conversation.setAttribute(Conversation.ATTRIBUTE_NON_ANONYMOUS, this.hasFeature("muc_nonanonymous")); + return changed; + } + + private void updateFeatures(List features) { this.features.clear(); this.features.addAll(features); } - public void updateFormData(Data form) { + private void updateFormData(Data form) { this.form = form; } @@ -397,8 +409,7 @@ public class MucOptions { } public boolean allowPm() { - Field field = this.form.getFieldByName("muc#roomconfig_allowpm"); - return field == null || "1".equals(field.getValue()); + return conversation.getBooleanAttribute(Conversation.ATTRIBUTE_ALLOW_PM, false); } public boolean participating() { @@ -408,7 +419,7 @@ public class MucOptions { } public boolean membersOnly() { - return hasFeature("muc_membersonly"); + return conversation.getBooleanAttribute(Conversation.ATTRIBUTE_MEMBERS_ONLY, false); } public boolean mamSupport() { @@ -420,19 +431,15 @@ public class MucOptions { } public boolean nonanonymous() { - return hasFeature("muc_nonanonymous"); + return conversation.getBooleanAttribute(Conversation.ATTRIBUTE_NON_ANONYMOUS, false); } public boolean isPrivateAndNonAnonymous() { return membersOnly() && nonanonymous(); } - public boolean persistent() { - return hasFeature("muc_persistent"); - } - public boolean moderated() { - return hasFeature("muc_moderated"); + return conversation.getBooleanAttribute(Conversation.ATTRIBUTE_MODERATED, false); } public User deleteUser(Jid jid) { -- cgit v1.2.3