mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-20 17:57:29 +00:00
Fix case where we delete unknown remote records but also handle unknown ids.
This commit is contained in:
@@ -331,9 +331,9 @@ public class StorageSyncJob extends BaseJob {
|
||||
Log.i(TAG, "Removed " + removedUnregistered + " recipients from storage service that have been unregistered for longer than 30 days.");
|
||||
}
|
||||
|
||||
List<StorageId> localStorageIds = getAllLocalStorageIds(self).stream().filter(it -> !it.isUnknown()).collect(Collectors.toList());
|
||||
List<StorageId> localStorageIds = getAllLocalStorageIds(self);
|
||||
IdDifferenceResult idDifference = StorageSyncHelper.findIdDifference(remoteManifest.getStorageIds(), localStorageIds);
|
||||
List<SignalStorageRecord> remoteInserts = buildLocalStorageRecords(context, self, idDifference.getLocalOnlyIds());
|
||||
List<SignalStorageRecord> remoteInserts = buildLocalStorageRecords(context, self, idDifference.getLocalOnlyIds().stream().filter(it -> !it.isUnknown()).collect(Collectors.toList()));
|
||||
List<byte[]> remoteDeletes = Stream.of(idDifference.getRemoteOnlyIds()).map(StorageId::getRaw).toList();
|
||||
|
||||
Log.i(TAG, "ID Difference :: " + idDifference);
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
package org.whispersystems.signalservice.api;
|
||||
|
||||
import com.squareup.wire.FieldEncoding;
|
||||
|
||||
import org.signal.libsignal.protocol.IdentityKeyPair;
|
||||
import org.signal.libsignal.protocol.InvalidKeyException;
|
||||
import org.signal.libsignal.protocol.ecc.ECPublicKey;
|
||||
@@ -563,10 +565,17 @@ public class SignalServiceAccountManager {
|
||||
|
||||
manifestRecordBuilder.identifiers(
|
||||
manifest.getStorageIds().stream()
|
||||
.map(id -> new ManifestRecord.Identifier.Builder()
|
||||
.raw(ByteString.of(id.getRaw()))
|
||||
.type(ManifestRecord.Identifier.Type.Companion.fromValue(id.getType()))
|
||||
.build())
|
||||
.map(id -> {
|
||||
ManifestRecord.Identifier.Builder builder = new ManifestRecord.Identifier.Builder()
|
||||
.raw(ByteString.of(id.getRaw()));
|
||||
if (!id.isUnknown()) {
|
||||
builder.type(ManifestRecord.Identifier.Type.Companion.fromValue(id.getType()));
|
||||
} else {
|
||||
builder.type(ManifestRecord.Identifier.Type.UNKNOWN);
|
||||
builder.addUnknownField(2, FieldEncoding.VARINT, id.getType());
|
||||
}
|
||||
return builder.build();
|
||||
})
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user