Include urgency in opaque call message sends.

This commit is contained in:
Cody Henthorne
2021-08-25 09:28:16 -04:00
committed by GitHub
parent 6179c087fb
commit c1fb4f9421
6 changed files with 50 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ import static org.thoughtcrime.securesms.events.WebRtcViewModel.State.CALL_INCOM
import static org.thoughtcrime.securesms.events.WebRtcViewModel.State.NETWORK_FAILURE;
import static org.thoughtcrime.securesms.events.WebRtcViewModel.State.NO_SUCH_USER;
import static org.thoughtcrime.securesms.events.WebRtcViewModel.State.UNTRUSTED_IDENTITY;
import static org.thoughtcrime.securesms.service.webrtc.WebRtcUtil.getUrgencyFromCallUrgency;
import android.app.Application;
import android.content.Context;
@@ -589,10 +590,10 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall.
}
@Override
public void onSendCallMessage(@NonNull UUID uuid, @NonNull byte[] bytes, @NonNull CallManager.CallMessageUrgency unused) {
public void onSendCallMessage(@NonNull UUID uuid, @NonNull byte[] bytes, @NonNull CallManager.CallMessageUrgency urgency) {
Log.i(TAG, "onSendCallMessage():");
OpaqueMessage opaqueMessage = new OpaqueMessage(bytes);
OpaqueMessage opaqueMessage = new OpaqueMessage(bytes, getUrgencyFromCallUrgency(urgency));
SignalServiceCallMessage callMessage = SignalServiceCallMessage.forOpaque(opaqueMessage, true, null);
networkExecutor.execute(() -> {
@@ -616,7 +617,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall.
}
@Override
public void onSendCallMessageToGroup(@NonNull byte[] groupIdBytes, @NonNull byte[] message, @NonNull CallManager.CallMessageUrgency unused) {
public void onSendCallMessageToGroup(@NonNull byte[] groupIdBytes, @NonNull byte[] message, @NonNull CallManager.CallMessageUrgency urgency) {
Log.i(TAG, "onSendCallMessageToGroup():");
networkExecutor.execute(() -> {
@@ -629,7 +630,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall.
.filter(r -> !r.isBlocked())
.collect(Collectors.toList())));
OpaqueMessage opaqueMessage = new OpaqueMessage(message);
OpaqueMessage opaqueMessage = new OpaqueMessage(message, getUrgencyFromCallUrgency(urgency));
SignalServiceCallMessage callMessage = SignalServiceCallMessage.forOutgoingGroupOpaque(groupId.getDecodedId(), System.currentTimeMillis(), opaqueMessage, true, null);
RecipientAccessList accessList = new RecipientAccessList(recipients);

View File

@@ -17,6 +17,7 @@ import org.whispersystems.libsignal.ecc.Curve;
import org.whispersystems.libsignal.ecc.ECPublicKey;
import org.whispersystems.signalservice.api.messages.calls.HangupMessage;
import org.whispersystems.signalservice.api.messages.calls.OfferMessage;
import org.whispersystems.signalservice.api.messages.calls.OpaqueMessage;
/**
* Calling specific helpers.
@@ -64,6 +65,13 @@ public final class WebRtcUtil {
}
}
public static OpaqueMessage.Urgency getUrgencyFromCallUrgency(@NonNull CallManager.CallMessageUrgency urgency) {
if (urgency == CallManager.CallMessageUrgency.HANDLE_IMMEDIATELY) {
return OpaqueMessage.Urgency.HANDLE_IMMEDIATELY;
}
return OpaqueMessage.Urgency.DROPPABLE;
}
public static void enableSpeakerPhoneIfNeeded(@NonNull Context context, boolean enable) {
if (!enable) {
return;