From 53f719e98d80099dfe75b64cb43b11efa660b6d3 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 4 Oct 2024 12:06:35 +0200 Subject: [PATCH] add ability to add arbitrary emojis --- src/main/AndroidManifest.xml | 1 + .../conversations/ui/AddReactionActivity.java | 63 +++++++++++++++++++ .../siacs/conversations/ui/XmppActivity.java | 8 +++ src/main/res/layout/activity_add_reaction.xml | 25 ++++++++ src/main/res/layout/dialog_add_reaction.xml | 31 ++++++--- src/main/res/values/strings.xml | 2 + 6 files changed, 121 insertions(+), 9 deletions(-) create mode 100644 src/main/java/eu/siacs/conversations/ui/AddReactionActivity.java create mode 100644 src/main/res/layout/activity_add_reaction.xml diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 382f0ebd9a9ab39c92fa7a58bbaa16e20bb2873d..b621147724ca0088d4bf5aad295d37e79b867d75 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -354,6 +354,7 @@ + finish()); + setTitle(R.string.add_reaction_title); + binding.emojiPicker.setOnEmojiPickedListener( + emojiViewItem -> addReaction(emojiViewItem.getEmoji())); + } + + private void addReaction(final String emoji) { + final var intent = getIntent(); + final var conversation = intent == null ? null : intent.getStringExtra("conversation"); + final var message = intent == null ? null : intent.getStringExtra("message"); + if (Strings.isNullOrEmpty(conversation) || Strings.isNullOrEmpty(message)) { + Toast.makeText(this, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show(); + return; + } + final var c = xmppConnectionService.findConversationByUuid(conversation); + final var m = c == null ? null : c.findMessageWithUuid(message); + if (m == null) { + Toast.makeText(this, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show(); + return; + } + final var aggregated = m.getAggregatedReactions(); + if (aggregated.ourReactions.contains(emoji)) { + xmppConnectionService.sendReactions(m, aggregated.ourReactions); + } else { + final ImmutableSet.Builder reactionBuilder = new ImmutableSet.Builder<>(); + reactionBuilder.addAll(aggregated.ourReactions); + reactionBuilder.add(emoji); + xmppConnectionService.sendReactions(m, reactionBuilder.build()); + } + finish(); + } + + @Override + protected void refreshUiReal() {} + + @Override + protected void onBackendConnected() {} +} diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index 25d334915d86710184c0d3742b1505b011556cb0..0798994f6adc1d49be6a869f05a9da9d345fac1a 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -326,6 +326,14 @@ public abstract class XmppActivity extends ActionBarActivity { dialog.dismiss(); }); } + viewBinding.more.setOnClickListener( + v -> { + dialog.dismiss(); + final var intent = new Intent(this, AddReactionActivity.class); + intent.putExtra("conversation", message.getConversation().getUuid()); + intent.putExtra("message", message.getUuid()); + startActivity(intent); + }); dialog.show(); } diff --git a/src/main/res/layout/activity_add_reaction.xml b/src/main/res/layout/activity_add_reaction.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a963b02c6b2385a3de0369be310100dbea25b8c --- /dev/null +++ b/src/main/res/layout/activity_add_reaction.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/dialog_add_reaction.xml b/src/main/res/layout/dialog_add_reaction.xml index 4eda335e28bb81040dc78443985edd032887e113..6546f37f85f4c8dbad55928b331c011f605adb5b 100644 --- a/src/main/res/layout/dialog_add_reaction.xml +++ b/src/main/res/layout/dialog_add_reaction.xml @@ -1,18 +1,31 @@ - + + android:layout_height="wrap_content" + android:padding="?dialogPreferredPadding"> - + +