Convert SignalService, Database, Group, Payment, and other remaining protos to wire.

This commit is contained in:
Cody Henthorne
2023-09-18 15:32:43 -04:00
committed by Alex Hart
parent a6b7d0bcc5
commit efbd5cab85
267 changed files with 7100 additions and 7214 deletions

View File

@@ -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
)
}
}

View File

@@ -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));

View File

@@ -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;
}
}
/**

View File

@@ -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