From 7542322a40a9c22e6fbcdbc7f69bb3deecf9e197 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 27 Dec 2017 21:01:13 +0100 Subject: save muc subject to disk and use crypto targets for offline name generation --- .../de/pixart/messenger/entities/MucOptions.java | 34 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 6 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 f1c3aa9e8..c6e0b6dc2 100644 --- a/src/main/java/de/pixart/messenger/entities/MucOptions.java +++ b/src/main/java/de/pixart/messenger/entities/MucOptions.java @@ -361,12 +361,11 @@ public class MucOptions { private final Set users = new HashSet<>(); private final List features = new ArrayList<>(); private Data form = new Data(); - private Conversation conversation; + private final Conversation conversation; private boolean isOnline = false; private Error error = Error.NONE; public OnRenameListener onRenameListener = null; private User self; - private String subject = null; private String password = null; public MucOptions(Conversation conversation) { @@ -660,15 +659,37 @@ public class MucOptions { return self; } - public void setSubject(String content) { - this.subject = content; + public boolean setSubject(String subject) { + return this.conversation.setAttribute("subject", subject); } public String getSubject() { - return this.subject; + return this.conversation.getAttribute("subject"); } + public List getFallbackUsersFromCryptoTargets() { + List users = new ArrayList<>(); + for (Jid jid : conversation.getAcceptedCryptoTargets()) { + User user = new User(this, null); + user.setRealJid(jid); + users.add(user); + } + return users; + } + + public List getUsersRelevantForNameAndAvatar() { + final List users; + if (isOnline) { + users = getUsers(5); + } else { + users = getFallbackUsersFromCryptoTargets(); + } + return users; + } + + public int NumberOfUsers() { + List users = getUsersRelevantForNameAndAvatar(); if (users.size() >= 1) { return users.size(); } else { @@ -679,9 +700,10 @@ public class MucOptions { public String createNameFromParticipants() { + List users = getUsersRelevantForNameAndAvatar(); if (users.size() >= 1) { StringBuilder builder = new StringBuilder(); - for (User user : getUsers(5)) { + for (User user : users) { if (builder.length() != 0) { builder.append(", "); } -- cgit v1.2.3