Change summary
src/main/java/eu/siacs/conversations/entities/Conversation.java | 2
src/main/java/eu/siacs/conversations/entities/Message.java | 2
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 1
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 4
src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 2
5 files changed, 6 insertions(+), 5 deletions(-)
Detailed changes
@@ -785,7 +785,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
public Reaction.Aggregated aggregatedReactionsFor(Message m, Function<Reaction, GetThumbnailForCid> thumbnailer) {
Set<Reaction> result = new HashSet<>();
- if (getMode() == MODE_MULTI) {
+ if (getMode() == MODE_MULTI && !m.isPrivateMessage()) {
result.addAll(reactions.get(m.getServerMsgId()));
} else if (m.getStatus() > Message.STATUS_RECEIVED) {
result.addAll(reactions.get(m.getUuid()));
@@ -424,7 +424,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable
}
public String replyId() {
- if (conversation.getMode() == Conversation.MODE_MULTI) return getServerMsgId();
+ if (conversation.getMode() == Conversation.MODE_MULTI && !isPrivateMessage()) return getServerMsgId();
final String remote = getRemoteMsgId();
if (remote == null && getStatus() > STATUS_RECEIVED) return getUuid();
return remote;
@@ -5315,6 +5315,7 @@ public class XmppConnectionService extends Service {
}
public boolean sendReactions(final Message message, final Collection<String> reactions) {
+ if (message.isPrivateMessage()) throw new IllegalArgumentException("Reactions to PM not implemented");
if (message.getConversation() instanceof Conversation conversation) {
final String reactToId;
final Collection<Reaction> combinedReactions;
@@ -996,7 +996,7 @@ public class ConversationFragment extends XmppFragment
while (body.length() > 0 && Character.isWhitespace(body.charAt(0))) body.delete(0, 1);
}
if (conversation.getReplyTo() != null) {
- if (Emoticons.isEmoji(body.toString().replaceAll("\\s", ""))) {
+ if (Emoticons.isEmoji(body.toString().replaceAll("\\s", "")) && conversation.getNextCounterpart() == null && !conversation.getReplyTo().isPrivateMessage()) {
final var aggregated = conversation.getReplyTo().getAggregatedReactions();
final ImmutableSet.Builder<String> reactionBuilder = new ImmutableSet.Builder<>();
reactionBuilder.addAll(aggregated.ourReactions);
@@ -1912,7 +1912,7 @@ public class ConversationFragment extends XmppFragment
reportAndBlock.setVisible(true);
}
}
- if (!encrypted) {
+ if (!encrypted && !m.isPrivateMessage()) {
addReaction.setVisible(!showError && !m.isDeleted());
}
if (!m.isFileOrImage()
@@ -1644,7 +1644,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
}
private void sendReactions(final Message message, final Collection<String> reactions) {
- if (activity.xmppConnectionService.sendReactions(message, reactions)) {
+ if (!message.isPrivateMessage() && activity.xmppConnectionService.sendReactions(message, reactions)) {
return;
}
Toast.makeText(activity, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show();