From b1d74e21e2ca9807b78f5e617fff207311cd371f Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 3 Dec 2020 10:04:55 -0500 Subject: [PATCH] Improve handling of 1:1 calls during group calls. --- .../service/webrtc/GroupActionProcessor.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java index febbcd171..9da955637 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.service.webrtc.state.WebRtcServiceState; import org.thoughtcrime.securesms.service.webrtc.state.WebRtcServiceStateBuilder; import org.thoughtcrime.securesms.webrtc.locks.LockManager; import org.webrtc.VideoTrack; +import org.whispersystems.signalservice.api.messages.calls.OfferMessage; import org.whispersystems.signalservice.api.messages.calls.OpaqueMessage; import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMessage; @@ -35,6 +36,20 @@ public class GroupActionProcessor extends DeviceAwareActionProcessor { super(webRtcInteractor, tag); } + protected @NonNull WebRtcServiceState handleReceivedOffer(@NonNull WebRtcServiceState currentState, + @NonNull WebRtcData.CallMetadata callMetadata, + @NonNull WebRtcData.OfferMetadata offerMetadata, + @NonNull WebRtcData.ReceivedOfferMetadata receivedOfferMetadata) + { + Log.i(tag, "handleReceivedOffer(): id: " + callMetadata.getCallId().format(callMetadata.getRemoteDevice())); + + Log.i(tag, "In a group call, send busy back to 1:1 call offer."); + currentState.getActionProcessor().handleSendBusy(currentState, callMetadata, true); + webRtcInteractor.insertMissedCall(callMetadata.getRemotePeer(), true, receivedOfferMetadata.getServerReceivedTimestamp(), offerMetadata.getOfferType() == OfferMessage.Type.VIDEO_CALL); + + return currentState; + } + @Override protected @NonNull WebRtcServiceState handleGroupRemoteDeviceStateChanged(@NonNull WebRtcServiceState currentState) { Log.i(tag, "handleGroupRemoteDeviceStateChanged():");