mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 09:49:30 +01:00
Convert SignalService, Database, Group, Payment, and other remaining protos to wire.
This commit is contained in:
committed by
Alex Hart
parent
a6b7d0bcc5
commit
efbd5cab85
@@ -1,10 +1,11 @@
|
||||
package org.thoughtcrime.securesms.service.webrtc
|
||||
|
||||
import com.google.protobuf.ByteString
|
||||
import okio.ByteString
|
||||
import okio.ByteString.Companion.toByteString
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.ringrtc.RemotePeer
|
||||
import org.whispersystems.signalservice.internal.push.SignalServiceProtos.SyncMessage.CallEvent
|
||||
import org.whispersystems.signalservice.internal.push.SyncMessage.CallEvent
|
||||
|
||||
/**
|
||||
* Helper for creating call event sync messages.
|
||||
@@ -64,18 +65,17 @@ object CallEventSyncMessageUtil {
|
||||
|
||||
val conversationId: ByteString = when {
|
||||
recipient.isCallLink -> recipient.requireCallLinkRoomId().encodeForProto()
|
||||
recipient.isGroup -> ByteString.copyFrom(recipient.requireGroupId().decodedId)
|
||||
recipient.isGroup -> recipient.requireGroupId().decodedId.toByteString()
|
||||
else -> recipient.requireServiceId().toByteString()
|
||||
}
|
||||
|
||||
return CallEvent
|
||||
.newBuilder()
|
||||
.setConversationId(conversationId)
|
||||
.setId(callId)
|
||||
.setTimestamp(timestamp)
|
||||
.setType(callType)
|
||||
.setDirection(if (isOutgoing) CallEvent.Direction.OUTGOING else CallEvent.Direction.INCOMING)
|
||||
.setEvent(event)
|
||||
.build()
|
||||
return CallEvent(
|
||||
conversationId = conversationId,
|
||||
id = callId,
|
||||
timestamp = timestamp,
|
||||
type = callType,
|
||||
direction = if (isOutgoing) CallEvent.Direction.OUTGOING else CallEvent.Direction.INCOMING,
|
||||
event = event
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
|
||||
import org.whispersystems.signalservice.api.push.ServiceId.ACI;
|
||||
import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException;
|
||||
import org.whispersystems.signalservice.internal.push.SignalServiceProtos.SyncMessage;
|
||||
import org.whispersystems.signalservice.internal.push.SyncMessage;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
@@ -104,6 +104,7 @@ import java.util.stream.Collectors;
|
||||
import io.reactivex.rxjava3.core.Flowable;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import kotlin.text.Charsets;
|
||||
|
||||
import static org.thoughtcrime.securesms.events.WebRtcViewModel.GroupCallState.IDLE;
|
||||
import static org.thoughtcrime.securesms.events.WebRtcViewModel.State.CALL_INCOMING;
|
||||
@@ -439,7 +440,7 @@ private void processStateless(@NonNull Function1<WebRtcEphemeralState, WebRtcEph
|
||||
List<GroupCall.GroupMemberInfo> members = Stream.of(GroupManager.getUuidCipherTexts(context, groupId))
|
||||
.map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize()))
|
||||
.toList();
|
||||
callManager.peekGroupCall(SignalStore.internalValues().groupCallingServer(), credential.getTokenBytes().toByteArray(), members, peekInfo -> {
|
||||
callManager.peekGroupCall(SignalStore.internalValues().groupCallingServer(), credential.token.getBytes(Charsets.UTF_8), members, peekInfo -> {
|
||||
Long threadId = SignalDatabase.threads().getThreadIdFor(group.getId());
|
||||
|
||||
if (threadId != null) {
|
||||
@@ -479,7 +480,7 @@ private void processStateless(@NonNull Function1<WebRtcEphemeralState, WebRtcEph
|
||||
.collect(Collectors.toList());
|
||||
|
||||
callManager.peekGroupCall(SignalStore.internalValues().groupCallingServer(),
|
||||
credential.getTokenBytes().toByteArray(),
|
||||
credential.token.getBytes(Charsets.UTF_8),
|
||||
members,
|
||||
peekInfo -> receivedGroupCallPeekForRingingCheck(info, peekInfo));
|
||||
} catch (IOException | VerificationFailedException | CallException e) {
|
||||
@@ -492,7 +493,7 @@ private void processStateless(@NonNull Function1<WebRtcEphemeralState, WebRtcEph
|
||||
networkExecutor.execute(() -> {
|
||||
try {
|
||||
GroupExternalCredential credential = GroupManager.getGroupExternalCredential(context, groupId);
|
||||
process((s, p) -> p.handleGroupMembershipProofResponse(s, groupCallHashCode, credential.getTokenBytes().toByteArray()));
|
||||
process((s, p) -> p.handleGroupMembershipProofResponse(s, groupCallHashCode, credential.token.getBytes(Charsets.UTF_8)));
|
||||
} catch (IOException e) {
|
||||
Log.w(TAG, "Unable to get group membership proof from service", e);
|
||||
process((s, p) -> p.handleGroupCallEnded(s, groupCallHashCode, GroupCall.GroupCallEndReason.SFU_CLIENT_FAILED_TO_JOIN));
|
||||
|
||||
@@ -75,13 +75,11 @@ public class WebRtcData {
|
||||
private final @NonNull byte[] remoteIdentityKey;
|
||||
private final long serverReceivedTimestamp;
|
||||
private final long serverDeliveredTimestamp;
|
||||
private final boolean isMultiRing;
|
||||
|
||||
public ReceivedOfferMetadata(@NonNull byte[] remoteIdentityKey, long serverReceivedTimestamp, long serverDeliveredTimestamp, boolean isMultiRing) {
|
||||
public ReceivedOfferMetadata(@NonNull byte[] remoteIdentityKey, long serverReceivedTimestamp, long serverDeliveredTimestamp) {
|
||||
this.remoteIdentityKey = remoteIdentityKey;
|
||||
this.serverReceivedTimestamp = serverReceivedTimestamp;
|
||||
this.serverDeliveredTimestamp = serverDeliveredTimestamp;
|
||||
this.isMultiRing = isMultiRing;
|
||||
}
|
||||
|
||||
@NonNull byte[] getRemoteIdentityKey() {
|
||||
@@ -95,10 +93,6 @@ public class WebRtcData {
|
||||
long getServerDeliveredTimestamp() {
|
||||
return serverDeliveredTimestamp;
|
||||
}
|
||||
|
||||
boolean isMultiRing() {
|
||||
return isMultiRing;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -127,20 +121,14 @@ public class WebRtcData {
|
||||
*/
|
||||
public static class ReceivedAnswerMetadata {
|
||||
private final @NonNull byte[] remoteIdentityKey;
|
||||
private final boolean isMultiRing;
|
||||
|
||||
public ReceivedAnswerMetadata(@NonNull byte[] remoteIdentityKey, boolean isMultiRing) {
|
||||
public ReceivedAnswerMetadata(@NonNull byte[] remoteIdentityKey) {
|
||||
this.remoteIdentityKey = remoteIdentityKey;
|
||||
this.isMultiRing = isMultiRing;
|
||||
}
|
||||
|
||||
@NonNull byte[] getRemoteIdentityKey() {
|
||||
return remoteIdentityKey;
|
||||
}
|
||||
|
||||
boolean isMultiRing() {
|
||||
return isMultiRing;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
package org.thoughtcrime.securesms.service.webrtc.links
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.protobuf.ByteString
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import okio.ByteString
|
||||
import okio.ByteString.Companion.toByteString
|
||||
import org.signal.core.util.Serializer
|
||||
import org.signal.ringrtc.CallLinkRootKey
|
||||
import org.thoughtcrime.securesms.util.Base64
|
||||
@@ -16,7 +17,7 @@ import org.thoughtcrime.securesms.util.Base64
|
||||
class CallLinkRoomId private constructor(private val roomId: ByteArray) : Parcelable {
|
||||
fun serialize(): String = DatabaseSerializer.serialize(this)
|
||||
|
||||
fun encodeForProto(): ByteString = ByteString.copyFrom(roomId)
|
||||
fun encodeForProto(): ByteString = roomId.toByteString()
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
|
||||
Reference in New Issue
Block a user