Change summary
src/main/java/eu/siacs/conversations/entities/Message.java | 14
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 12
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 10
3 files changed, 18 insertions(+), 18 deletions(-)
Detailed changes
@@ -460,20 +460,6 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable
setInReplyTo(replyTo);
}
- public Message react(String emoji) {
- final var m = reply();
- if (getReactionsEl() == null) {
- m.updateReaction(this, emoji);
- } else if (mInReplyTo != null) {
- // Try to send react-to-reaction to parent
- m.updateReaction(mInReplyTo, emoji);
- } else {
- // Do not send react-to-reaction
- m.updateReplyTo(this, new SpannableStringBuilder(emoji));
- }
- return m;
- }
-
public void updateReaction(final Message reactTo, String emoji) {
Set<String> emojis = new HashSet<>();
if (conversation instanceof Conversation) emojis = ((Conversation) conversation).findReactionsTo(reactTo.replyId(), null);
@@ -63,9 +63,10 @@ import com.cheogram.android.WebxdcUpdate;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
-import com.google.common.collect.Multimap;
import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Multimap;
import com.google.common.io.Files;
import com.kedia.ogparser.JsoupProxy;
@@ -1242,8 +1243,13 @@ public class XmppConnectionService extends Service {
final Message inReplyTo = lastMessageUuid == null ? null : conversation.findMessageWithUuid(lastMessageUuid);
Message message = new Message(conversation, body, conversation.getNextEncryption());
if (inReplyTo != null) {
- if (Emoticons.isEmoji(body)) {
- message = inReplyTo.react(body);
+ if (Emoticons.isEmoji(body.replaceAll("\\s", ""))) {
+ final var aggregated = inReplyTo.getAggregatedReactions();
+ final ImmutableSet.Builder<String> reactionBuilder = new ImmutableSet.Builder<>();
+ reactionBuilder.addAll(aggregated.ourReactions);
+ reactionBuilder.add(body.replaceAll("\\s", ""));
+ sendReactions(inReplyTo, reactionBuilder.build());
+ return;
} else {
message = inReplyTo.reply();
}
@@ -97,6 +97,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.common.base.Optional;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
@@ -981,7 +982,14 @@ public class ConversationFragment extends XmppFragment
}
if (conversation.getReplyTo() != null) {
if (Emoticons.isEmoji(body.toString().replaceAll("\\s", ""))) {
- message = conversation.getReplyTo().react(body.toString().replaceAll("\\s", ""));
+ final var aggregated = conversation.getReplyTo().getAggregatedReactions();
+ final ImmutableSet.Builder<String> reactionBuilder = new ImmutableSet.Builder<>();
+ reactionBuilder.addAll(aggregated.ourReactions);
+ reactionBuilder.add(body.toString().replaceAll("\\s", ""));
+ activity.xmppConnectionService.sendReactions(conversation.getReplyTo(), reactionBuilder.build());
+ setupReply(null);
+ messageSent();
+ return;
} else {
message = conversation.getReplyTo().reply();
message.appendBody(body);