1package eu.siacs.conversations.ui;
2
3import android.os.Bundle;
4import android.widget.Toast;
5
6import androidx.databinding.DataBindingUtil;
7
8import com.google.common.base.Strings;
9import com.google.common.collect.ImmutableSet;
10
11import eu.siacs.conversations.R;
12import eu.siacs.conversations.databinding.ActivityAddReactionBinding;
13
14public class AddReactionActivity extends XmppActivity {
15
16 @Override
17 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19
20 final ActivityAddReactionBinding binding =
21 DataBindingUtil.setContentView(this, R.layout.activity_add_reaction);
22 Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
23
24 setSupportActionBar(binding.toolbar);
25 binding.toolbar.setNavigationIcon(R.drawable.ic_clear_24dp);
26 binding.toolbar.setNavigationOnClickListener(v -> finish());
27 setTitle(R.string.add_reaction_title);
28 binding.emojiPicker.setOnEmojiPickedListener(
29 emojiViewItem -> addReaction(emojiViewItem.getEmoji()));
30 }
31
32 private void addReaction(final String emoji) {
33 final var intent = getIntent();
34 final var conversation = intent == null ? null : intent.getStringExtra("conversation");
35 final var message = intent == null ? null : intent.getStringExtra("message");
36 if (Strings.isNullOrEmpty(conversation) || Strings.isNullOrEmpty(message)) {
37 Toast.makeText(this, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show();
38 return;
39 }
40 final var c = xmppConnectionService.findConversationByUuid(conversation);
41 final var m = c == null ? null : c.findMessageWithUuid(message);
42 if (m == null) {
43 Toast.makeText(this, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show();
44 return;
45 }
46 final var aggregated = m.getAggregatedReactions();
47 if (aggregated.ourReactions.contains(emoji)) {
48 if (!xmppConnectionService.sendReactions(m, aggregated.ourReactions)) {
49 Toast.makeText(this, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show();
50 return;
51 }
52 } else {
53 final ImmutableSet.Builder<String> reactionBuilder = new ImmutableSet.Builder<>();
54 reactionBuilder.addAll(aggregated.ourReactions);
55 reactionBuilder.add(emoji);
56 if (!xmppConnectionService.sendReactions(m, reactionBuilder.build())) {
57 Toast.makeText(this, R.string.could_not_add_reaction, Toast.LENGTH_LONG).show();
58 }
59 }
60 finish();
61 }
62
63 @Override
64 protected void refreshUiReal() {}
65
66 @Override
67 protected void onBackendConnected() {}
68}