mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
Add Small Group Ringing support.
This commit is contained in:
committed by
Alex Hart
parent
5787a5f68a
commit
db7272730e
@@ -273,6 +273,27 @@ public class SignalServiceMessageSender {
|
||||
sendMessage(recipient, getTargetUnidentifiedAccess(unidentifiedAccess), System.currentTimeMillis(), envelopeContent, false, null);
|
||||
}
|
||||
|
||||
public List<SendMessageResult> sendCallMessage(List<SignalServiceAddress> recipients,
|
||||
List<Optional<UnidentifiedAccessPair>> unidentifiedAccess,
|
||||
SignalServiceCallMessage message)
|
||||
throws IOException
|
||||
{
|
||||
Content content = createCallContent(message);
|
||||
EnvelopeContent envelopeContent = EnvelopeContent.encrypted(content, ContentHint.DEFAULT, Optional.absent());
|
||||
|
||||
return sendMessage(recipients, getTargetUnidentifiedAccess(unidentifiedAccess), System.currentTimeMillis(), envelopeContent, false, null, null);
|
||||
}
|
||||
|
||||
public List<SendMessageResult> sendCallMessage(DistributionId distributionId,
|
||||
List<SignalServiceAddress> recipients,
|
||||
List<UnidentifiedAccess> unidentifiedAccess,
|
||||
SignalServiceCallMessage message)
|
||||
throws IOException, UntrustedIdentityException, InvalidKeyException, NoSessionException
|
||||
{
|
||||
Content content = createCallContent(message);
|
||||
return sendGroupMessage(distributionId, recipients, unidentifiedAccess, message.getTimestamp().get(), content, ContentHint.IMPLICIT, message.getGroupId().get(), false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send an http request on behalf of the calling infrastructure.
|
||||
*
|
||||
|
||||
@@ -15,6 +15,8 @@ public class SignalServiceCallMessage {
|
||||
private final Optional<OpaqueMessage> opaqueMessage;
|
||||
private final Optional<Integer> destinationDeviceId;
|
||||
private final boolean isMultiRing;
|
||||
private final Optional<byte[]> groupId;
|
||||
private final Optional<Long> timestamp;
|
||||
|
||||
private SignalServiceCallMessage(Optional<OfferMessage> offerMessage,
|
||||
Optional<AnswerMessage> answerMessage,
|
||||
@@ -24,6 +26,20 @@ public class SignalServiceCallMessage {
|
||||
Optional<OpaqueMessage> opaqueMessage,
|
||||
boolean isMultiRing,
|
||||
Optional<Integer> destinationDeviceId)
|
||||
{
|
||||
this(offerMessage, answerMessage, iceUpdateMessages, hangupMessage, busyMessage, opaqueMessage, isMultiRing, destinationDeviceId, Optional.absent(), Optional.absent());
|
||||
}
|
||||
|
||||
private SignalServiceCallMessage(Optional<OfferMessage> offerMessage,
|
||||
Optional<AnswerMessage> answerMessage,
|
||||
Optional<List<IceUpdateMessage>> iceUpdateMessages,
|
||||
Optional<HangupMessage> hangupMessage,
|
||||
Optional<BusyMessage> busyMessage,
|
||||
Optional<OpaqueMessage> opaqueMessage,
|
||||
boolean isMultiRing,
|
||||
Optional<Integer> destinationDeviceId,
|
||||
Optional<byte[]> groupId,
|
||||
Optional<Long> timestamp)
|
||||
{
|
||||
this.offerMessage = offerMessage;
|
||||
this.answerMessage = answerMessage;
|
||||
@@ -33,6 +49,8 @@ public class SignalServiceCallMessage {
|
||||
this.opaqueMessage = opaqueMessage;
|
||||
this.isMultiRing = isMultiRing;
|
||||
this.destinationDeviceId = destinationDeviceId;
|
||||
this.groupId = groupId;
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public static SignalServiceCallMessage forOffer(OfferMessage offerMessage, boolean isMultiRing, Integer destinationDeviceId) {
|
||||
@@ -115,6 +133,19 @@ public class SignalServiceCallMessage {
|
||||
Optional.fromNullable(destinationDeviceId));
|
||||
}
|
||||
|
||||
public static SignalServiceCallMessage forOutgoingGroupOpaque(byte[] groupId, long timestamp, OpaqueMessage opaqueMessage, boolean isMultiRing, Integer destinationDeviceId) {
|
||||
return new SignalServiceCallMessage(Optional.absent(),
|
||||
Optional.absent(),
|
||||
Optional.absent(),
|
||||
Optional.absent(),
|
||||
Optional.absent(),
|
||||
Optional.of(opaqueMessage),
|
||||
isMultiRing,
|
||||
Optional.fromNullable(destinationDeviceId),
|
||||
Optional.of(groupId),
|
||||
Optional.of(timestamp));
|
||||
}
|
||||
|
||||
|
||||
public static SignalServiceCallMessage empty() {
|
||||
return new SignalServiceCallMessage(Optional.absent(),
|
||||
@@ -122,7 +153,8 @@ public class SignalServiceCallMessage {
|
||||
Optional.absent(),
|
||||
Optional.absent(),
|
||||
Optional.absent(),
|
||||
Optional.absent(), false,
|
||||
Optional.absent(),
|
||||
false,
|
||||
Optional.absent());
|
||||
}
|
||||
|
||||
@@ -157,4 +189,12 @@ public class SignalServiceCallMessage {
|
||||
public Optional<Integer> getDestinationDeviceId() {
|
||||
return destinationDeviceId;
|
||||
}
|
||||
|
||||
public Optional<byte[]> getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
public Optional<Long> getTimestamp() {
|
||||
return timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,8 @@ message CallMessage {
|
||||
}
|
||||
|
||||
message Opaque {
|
||||
optional bytes data = 1;
|
||||
optional bytes data = 1;
|
||||
reserved /* urgency */ 2;
|
||||
}
|
||||
|
||||
optional Offer offer = 1;
|
||||
|
||||
Reference in New Issue
Block a user