diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 5b6f0e2aecbbb1b4f0cb061223ff74f5b8c9bf30..d0262b25d50dd6b3d4fc71289c232304fe7774f2 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -950,8 +950,8 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable return encryption; } - public static boolean configurePrivateMessage(final Message message) { - return configurePrivateMessage(message, false); + public static void configurePrivateMessage(final Message message) { + configurePrivateMessage(message, false); } public static boolean configurePrivateFileMessage(final Message message) { @@ -959,27 +959,19 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } private static boolean configurePrivateMessage(final Message message, final boolean isFile) { - final Conversation conversation; - if (message.conversation instanceof Conversation) { - conversation = (Conversation) message.conversation; - } else { - return false; - } - if (conversation.getMode() == Conversation.MODE_MULTI) { - final Jid nextCounterpart = conversation.getNextCounterpart(); - return configurePrivateMessage(conversation, message, nextCounterpart, isFile); + if (message.conversation instanceof Conversation conversation) { + if (conversation.getMode() == Conversation.MODE_MULTI) { + final Jid nextCounterpart = conversation.getNextCounterpart(); + return configurePrivateMessage(conversation, message, nextCounterpart, isFile); + } } return false; } - public static boolean configurePrivateMessage(final Message message, final Jid counterpart) { - final Conversation conversation; - if (message.conversation instanceof Conversation) { - conversation = (Conversation) message.conversation; - } else { - return false; + public static void configurePrivateMessage(final Message message, final Jid counterpart) { + if (message.conversation instanceof Conversation conversation) { + configurePrivateMessage(conversation, message, counterpart, false); } - return configurePrivateMessage(conversation, message, counterpart, false); } private static boolean configurePrivateMessage( @@ -991,7 +983,16 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable return false; } message.setCounterpart(counterpart); - message.setTrueCounterpart(conversation.getMucOptions().getTrueCounterpart(counterpart)); + final var mucOptions = conversation.getMucOptions(); + if (counterpart.equals(mucOptions.getSelf().getFullJid())) { + message.setTrueCounterpart(conversation.getAccount().getJid().asBareJid()); + } else { + final var user = mucOptions.findUserByFullJid(counterpart); + if (user != null) { + message.setTrueCounterpart(user.getRealJid()); + message.setOccupantId(user.getOccupantId()); + } + } message.setType(isFile ? Message.TYPE_PRIVATE_FILE : Message.TYPE_PRIVATE); return true; }