From 340bb93653013d64b29b03d22acb1b51ddaf3ef1 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 10 Oct 2024 16:18:29 -0300 Subject: [PATCH] Add backup subscriber fields to account record. --- .../storage/AccountRecordProcessor.java | 21 +++++++++++++----- .../securesms/storage/StorageSyncHelper.java | 1 + .../api/storage/SignalAccountRecord.java | 22 +++++++++++++++++++ .../src/main/protowire/StorageService.proto | 2 ++ 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java index 17c10c4e29..6621bc92ce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java @@ -94,6 +94,14 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor defaultReactions; private final Subscriber subscriber; + private final Subscriber backupsSubscriber; public SignalAccountRecord(StorageId id, AccountRecord proto) { this.id = id; @@ -51,6 +52,7 @@ public final class SignalAccountRecord implements SignalRecord { this.pinnedConversations = new ArrayList<>(proto.pinnedConversations.size()); this.defaultReactions = new ArrayList<>(proto.preferredReactionEmoji); this.subscriber = new Subscriber(proto.subscriberCurrencyCode, proto.subscriberId.toByteArray()); + this.backupsSubscriber = new Subscriber(proto.backupsSubscriberCurrencyCode, proto.backupsSubscriberId.toByteArray()); if (proto.payments != null) { this.payments = new Payments(proto.payments.enabled, OptionalUtil.absentIfEmpty(proto.payments.entropy)); @@ -207,6 +209,10 @@ public final class SignalAccountRecord implements SignalRecord { diff.add("HasCompletedUsernameOnboarding"); } + if (!Objects.equals(this.getBackupsSubscriber(), that.getBackupsSubscriber())) { + diff.add("BackupsSubscriber"); + } + return diff.toString(); } else { return "Different class. " + getClass().getSimpleName() + " | " + other.getClass().getSimpleName(); @@ -301,6 +307,10 @@ public final class SignalAccountRecord implements SignalRecord { return subscriber; } + public Subscriber getBackupsSubscriber() { + return backupsSubscriber; + } + public boolean isDisplayBadgesOnProfile() { return proto.displayBadgesOnProfile; } @@ -666,6 +676,18 @@ public final class SignalAccountRecord implements SignalRecord { return this; } + public Builder setBackupsSubscriber(Subscriber subscriber) { + if (subscriber.id.isPresent() && subscriber.currencyCode.isPresent()) { + builder.backupsSubscriberId(ByteString.of(subscriber.id.get())); + builder.backupsSubscriberCurrencyCode(subscriber.currencyCode.get()); + } else { + builder.backupsSubscriberId(StorageRecordProtoUtil.getDefaultAccountRecord().subscriberId); + builder.backupsSubscriberCurrencyCode(StorageRecordProtoUtil.getDefaultAccountRecord().subscriberCurrencyCode); + } + + return this; + } + public Builder setDisplayBadgesOnProfile(boolean displayBadgesOnProfile) { builder.displayBadgesOnProfile(displayBadgesOnProfile); return this; diff --git a/libsignal-service/src/main/protowire/StorageService.proto b/libsignal-service/src/main/protowire/StorageService.proto index 6faad055af..7d01e0e40b 100644 --- a/libsignal-service/src/main/protowire/StorageService.proto +++ b/libsignal-service/src/main/protowire/StorageService.proto @@ -219,6 +219,8 @@ message AccountRecord { string username = 33; bool hasCompletedUsernameOnboarding = 34; UsernameLink usernameLink = 35; + bytes backupsSubscriberId = 36; + string backupsSubscriberCurrencyCode = 37; } message StoryDistributionListRecord {