mirror of
https://github.com/AsamK/signal-cli.git
synced 2026-08-25 05:26:03 +00:00
Parse binary aci/pni in storage records
This commit is contained in:
parent
5fafa24974
commit
c5e4b250b8
@ -143,6 +143,10 @@
|
||||
"name":"org.signal.libsignal.net.ChatServiceException",
|
||||
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"org.signal.libsignal.net.ChatServiceInactiveException",
|
||||
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"org.signal.libsignal.net.DeviceDeregisteredException",
|
||||
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
|
||||
@ -155,6 +159,10 @@
|
||||
"name":"org.signal.libsignal.net.RetryLaterException",
|
||||
"methods":[{"name":"<init>","parameterTypes":["long"] }]
|
||||
},
|
||||
{
|
||||
"name":"org.signal.libsignal.net.TransportFailureException",
|
||||
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"org.signal.libsignal.net.internal.BridgeChatListener"
|
||||
},
|
||||
|
||||
@ -63,8 +63,8 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
|
||||
@Override
|
||||
protected boolean isInvalid(SignalContactRecord remoteRecord) {
|
||||
final var remote = remoteRecord.getProto();
|
||||
final var aci = ACI.parseOrNull(remote.aci);
|
||||
final var pni = PNI.parseOrNull(remote.pni);
|
||||
final var aci = ACI.parseOrNull(remote.aci, remote.aciBinary);
|
||||
final var pni = PNI.parseOrNull(remote.pni, remote.pniBinary);
|
||||
final var e164 = nullIfEmpty(remote.e164);
|
||||
boolean hasAci = aci != null && aci.isValid();
|
||||
boolean hasPni = pni != null && pni.isValid();
|
||||
@ -129,7 +129,7 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
|
||||
identityKey = local.identityKey.size() > 0 ? local.identityKey : ByteString.EMPTY;
|
||||
}
|
||||
|
||||
if (!local.aci.isEmpty()
|
||||
if ((!local.aci.isEmpty() || local.aciBinary.size() > 0)
|
||||
&& local.identityKey.size() > 0
|
||||
&& remote.identityKey.size() > 0
|
||||
&& !local.identityKey.equals(remote.identityKey)) {
|
||||
@ -327,8 +327,8 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
|
||||
}
|
||||
|
||||
private static RecipientAddress getRecipientAddress(final ContactRecord contactRecord) {
|
||||
return new RecipientAddress(ACI.parseOrNull(contactRecord.aci),
|
||||
PNI.parseOrNull(contactRecord.pni),
|
||||
return new RecipientAddress(ACI.parseOrNull(contactRecord.aci, contactRecord.aciBinary),
|
||||
PNI.parseOrNull(contactRecord.pni, contactRecord.pniBinary),
|
||||
nullIfEmpty(contactRecord.e164),
|
||||
nullIfEmpty(contactRecord.username));
|
||||
}
|
||||
|
||||
@ -33,6 +33,9 @@ import static org.signal.core.util.StringExtensionsKt.emptyIfNull;
|
||||
|
||||
public final class StorageSyncModels {
|
||||
|
||||
private final static boolean useBinaryId = false;
|
||||
private final static boolean useStringId = true;
|
||||
|
||||
private StorageSyncModels() {
|
||||
}
|
||||
|
||||
@ -90,13 +93,19 @@ public final class StorageSyncModels {
|
||||
public static ContactRecord localToRemoteRecord(Recipient recipient, IdentityInfo identity) {
|
||||
final var address = recipient.getAddress();
|
||||
final var builder = SignalContactRecord.Companion.newBuilder(recipient.getStorageRecord())
|
||||
.aci(address.aci().map(ACI::toString).orElse(""))
|
||||
.e164(address.number().orElse(""))
|
||||
.pni(address.pni().map(PNI::toStringWithoutPrefix).orElse(""))
|
||||
.username(address.username().orElse(""))
|
||||
.profileKey(recipient.getProfileKey() == null
|
||||
? ByteString.EMPTY
|
||||
: ByteString.of(recipient.getProfileKey().serialize()));
|
||||
if (useBinaryId) {
|
||||
builder.aciBinary(address.aci().map(ACI::toByteString).orElse(ByteString.EMPTY))
|
||||
.pniBinary(address.pni().map(PNI::toByteString).orElse(ByteString.EMPTY));
|
||||
}
|
||||
if (useStringId) {
|
||||
builder.aci(address.aci().map(ACI::toString).orElse(""))
|
||||
.pni(address.pni().map(PNI::toStringWithoutPrefix).orElse(""));
|
||||
}
|
||||
if (recipient.getProfile() != null) {
|
||||
builder.givenName(emptyIfNull(recipient.getProfile().getGivenName()))
|
||||
.familyName(emptyIfNull(recipient.getProfile().getFamilyName()));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user