AddReactionActivity.java

 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}