diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java index 4b7eff3a1..dc70807e4 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -513,6 +513,16 @@ public class CallActivity extends CallBaseActivity { reactionAnimator = new ReactionAnimator(context, binding.reactionAnimationWrapper, viewThemeUtils); } + public void sendReaction(String emoji) { + addReactionForAnimation(emoji, conversationUser.getDisplayName()); + + if (isConnectionEstablished() && peerConnectionWrapperList != null) { + for (PeerConnectionWrapper peerConnectionWrapper : peerConnectionWrapperList) { + peerConnectionWrapper.sendReaction(emoji); + } + } + } + @Override public void onStart() { super.onStart(); @@ -2730,7 +2740,7 @@ public class CallActivity extends CallBaseActivity { } } - public void addCallReaction(String emoji, String displayName) { + public void addReactionForAnimation(String emoji, String displayName) { reactionAnimator.addReaction(emoji, displayName); } @@ -2910,7 +2920,7 @@ public class CallActivity extends CallBaseActivity { @Override public void onReaction(String reaction) { - addCallReaction(reaction, callParticipantModel.getNick()); + addReactionForAnimation(reaction, callParticipantModel.getNick()); } } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MoreCallActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MoreCallActionsDialog.kt index 36d6b8d37..f21543272 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MoreCallActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MoreCallActionsDialog.kt @@ -122,11 +122,7 @@ class MoreCallActionsDialog(private val callActivity: CallActivity) : BottomShee emojiView.layoutParams = param emojiView.setOnClickListener { view -> - // TODO: send signaling messages instead to directly show reaction on own device - callActivity.addCallReaction( - (view as EmojiTextView).text.toString(), - callActivity.conversationUser.displayName - ) + callActivity.sendReaction((view as EmojiTextView).text.toString()) dismiss() } binding.callEmojiBar.addView(emojiView) diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java index 6b93ffc03..43ddf4a87 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java @@ -204,6 +204,20 @@ public class PeerConnectionWrapper { signalingMessageSender.send(ncSignalingMessage); } + public void sendReaction(String emoji) { + NCMessagePayload ncMessagePayload = new NCMessagePayload(); + ncMessagePayload.setReaction(emoji); + ncMessagePayload.setTimestamp(System.currentTimeMillis()); + + NCSignalingMessage ncSignalingMessage = new NCSignalingMessage(); + ncSignalingMessage.setTo(sessionId); + ncSignalingMessage.setType("reaction"); + ncSignalingMessage.setPayload(ncMessagePayload); + ncSignalingMessage.setRoomType(videoStreamType); + + signalingMessageSender.send(ncSignalingMessage); + } + /** * Adds a listener for data channel messages. *