Add and sync displayBadgesOnProfile Flag.

fork-5.53.8
Alex Hart 2021-11-11 14:59:30 -04:00
rodzic b9f060b442
commit 6b94fc82eb
15 zmienionych plików z 78 dodań i 20 usunięć

Wyświetl plik

@ -6,7 +6,9 @@ import io.reactivex.rxjava3.schedulers.Schedulers
import org.thoughtcrime.securesms.badges.models.Badge import org.thoughtcrime.securesms.badges.models.Badge
import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.database.DatabaseFactory
import org.thoughtcrime.securesms.database.RecipientDatabase import org.thoughtcrime.securesms.database.RecipientDatabase
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.util.ProfileUtil import org.thoughtcrime.securesms.util.ProfileUtil
class BadgeRepository(context: Context) { class BadgeRepository(context: Context) {
@ -17,10 +19,16 @@ class BadgeRepository(context: Context) {
displayBadgesOnProfile: Boolean, displayBadgesOnProfile: Boolean,
selfBadges: List<Badge> = Recipient.self().badges selfBadges: List<Badge> = Recipient.self().badges
): Completable = Completable.fromAction { ): Completable = Completable.fromAction {
val recipientDatabase: RecipientDatabase = DatabaseFactory.getRecipientDatabase(context)
SignalStore.donationsValues().setDisplayBadgesOnProfile(displayBadgesOnProfile)
recipientDatabase.markNeedsSync(Recipient.self().id)
StorageSyncHelper.scheduleSyncForDataChange()
val badges = selfBadges.map { it.copy(visible = displayBadgesOnProfile) } val badges = selfBadges.map { it.copy(visible = displayBadgesOnProfile) }
ProfileUtil.uploadProfileWithBadges(context, badges) ProfileUtil.uploadProfileWithBadges(context, badges)
val recipientDatabase: RecipientDatabase = DatabaseFactory.getRecipientDatabase(context)
recipientDatabase.setBadges(Recipient.self().id, badges) recipientDatabase.setBadges(Recipient.self().id, badges)
}.subscribeOn(Schedulers.io()) }.subscribeOn(Schedulers.io())

Wyświetl plik

@ -36,10 +36,6 @@ data class Badge(
val visible: Boolean, val visible: Boolean,
) : Parcelable, Key { ) : Parcelable, Key {
fun setVisible(): Badge {
return copy(visible = true)
}
fun isExpired(): Boolean = expirationTimestamp < System.currentTimeMillis() && expirationTimestamp > 0 fun isExpired(): Boolean = expirationTimestamp < System.currentTimeMillis() && expirationTimestamp > 0
fun isBoost(): Boolean = id == BOOST_BADGE_ID fun isBoost(): Boolean = id == BOOST_BADGE_ID

Wyświetl plik

@ -13,6 +13,7 @@ import io.reactivex.rxjava3.subjects.PublishSubject
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.badges.BadgeRepository import org.thoughtcrime.securesms.badges.BadgeRepository
import org.thoughtcrime.securesms.components.settings.app.subscription.SubscriptionsRepository import org.thoughtcrime.securesms.components.settings.app.subscription.SubscriptionsRepository
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.livedata.Store import org.thoughtcrime.securesms.util.livedata.Store
import org.whispersystems.libsignal.util.guava.Optional import org.whispersystems.libsignal.util.guava.Optional
@ -36,7 +37,7 @@ class BadgesOverviewViewModel(
state.copy( state.copy(
stage = if (state.stage == BadgesOverviewState.Stage.INIT) BadgesOverviewState.Stage.READY else state.stage, stage = if (state.stage == BadgesOverviewState.Stage.INIT) BadgesOverviewState.Stage.READY else state.stage,
allUnlockedBadges = recipient.badges, allUnlockedBadges = recipient.badges,
displayBadgesOnProfile = recipient.badges.firstOrNull()?.visible == true, displayBadgesOnProfile = SignalStore.donationsValues().getDisplayBadgesOnProfile(),
featuredBadge = recipient.featuredBadge featuredBadge = recipient.featuredBadge
) )
} }

Wyświetl plik

@ -11,17 +11,20 @@ import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.signal.core.util.money.FiatMoney import org.signal.core.util.money.FiatMoney
import org.signal.donations.GooglePayApi import org.signal.donations.GooglePayApi
import org.signal.donations.GooglePayPaymentSource import org.signal.donations.GooglePayPaymentSource
import org.signal.donations.StripeApi import org.signal.donations.StripeApi
import org.thoughtcrime.securesms.database.DatabaseFactory
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.JobTracker import org.thoughtcrime.securesms.jobmanager.JobTracker
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
import org.thoughtcrime.securesms.jobs.BoostReceiptRequestResponseJob import org.thoughtcrime.securesms.jobs.BoostReceiptRequestResponseJob
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.storage.StorageSyncHelper import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.subscription.LevelUpdate import org.thoughtcrime.securesms.subscription.LevelUpdate
import org.thoughtcrime.securesms.subscription.LevelUpdateOperation import org.thoughtcrime.securesms.subscription.LevelUpdateOperation
@ -60,6 +63,17 @@ class DonationPaymentRepository(activity: Activity) : StripeApi.PaymentIntentFet
fun isGooglePayAvailable(): Completable = googlePayApi.queryIsReadyToPay() fun isGooglePayAvailable(): Completable = googlePayApi.queryIsReadyToPay()
fun scheduleSyncForAccountRecordChange() {
SignalExecutors.BOUNDED.execute {
scheduleSyncForAccountRecordChangeSync()
}
}
fun scheduleSyncForAccountRecordChangeSync() {
DatabaseFactory.getRecipientDatabase(application).markNeedsSync(Recipient.self().id)
StorageSyncHelper.scheduleSyncForDataChange()
}
fun internetConnectionObserver(): Observable<Boolean> = Observable.create { fun internetConnectionObserver(): Observable<Boolean> = Observable.create {
val observer = object : BroadcastReceiver() { val observer = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
@ -124,7 +138,7 @@ class DonationPaymentRepository(activity: Activity) : StripeApi.PaymentIntentFet
.donationsValues() .donationsValues()
.setSubscriber(Subscriber(subscriberId, SignalStore.donationsValues().getSubscriptionCurrency().currencyCode)) .setSubscriber(Subscriber(subscriberId, SignalStore.donationsValues().getSubscriptionCurrency().currencyCode))
StorageSyncHelper.scheduleSyncForDataChange() scheduleSyncForAccountRecordChangeSync()
} }
} }

Wyświetl plik

@ -5,7 +5,9 @@ import org.thoughtcrime.securesms.components.settings.DSLConfiguration
import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter
import org.thoughtcrime.securesms.components.settings.DSLSettingsBottomSheetFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsBottomSheetFragment
import org.thoughtcrime.securesms.components.settings.DSLSettingsText import org.thoughtcrime.securesms.components.settings.DSLSettingsText
import org.thoughtcrime.securesms.components.settings.app.subscription.DonationPaymentComponent
import org.thoughtcrime.securesms.components.settings.configure import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.keyboard.findListener
import java.util.Locale import java.util.Locale
/** /**
@ -13,6 +15,8 @@ import java.util.Locale
*/ */
class SetCurrencyFragment : DSLSettingsBottomSheetFragment() { class SetCurrencyFragment : DSLSettingsBottomSheetFragment() {
private lateinit var donationPaymentComponent: DonationPaymentComponent
private val viewModel: SetCurrencyViewModel by viewModels( private val viewModel: SetCurrencyViewModel by viewModels(
factoryProducer = { factoryProducer = {
val args = SetCurrencyFragmentArgs.fromBundle(requireArguments()) val args = SetCurrencyFragmentArgs.fromBundle(requireArguments())
@ -21,6 +25,8 @@ class SetCurrencyFragment : DSLSettingsBottomSheetFragment() {
) )
override fun bindAdapter(adapter: DSLSettingsAdapter) { override fun bindAdapter(adapter: DSLSettingsAdapter) {
donationPaymentComponent = findListener()!!
viewModel.state.observe(viewLifecycleOwner) { state -> viewModel.state.observe(viewLifecycleOwner) { state ->
adapter.submitList(getConfiguration(state).toMappingModelList()) adapter.submitList(getConfiguration(state).toMappingModelList())
} }
@ -34,6 +40,7 @@ class SetCurrencyFragment : DSLSettingsBottomSheetFragment() {
summary = DSLSettingsText.from(currency.currencyCode), summary = DSLSettingsText.from(currency.currencyCode),
onClick = { onClick = {
viewModel.setSelectedCurrency(currency.currencyCode) viewModel.setSelectedCurrency(currency.currencyCode)
donationPaymentComponent.donationPaymentRepository.scheduleSyncForAccountRecordChange()
dismissAllowingStateLoss() dismissAllowingStateLoss()
} }
) )

Wyświetl plik

@ -6,7 +6,6 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.BuildConfig
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.subscription.Subscriber import org.thoughtcrime.securesms.subscription.Subscriber
import org.thoughtcrime.securesms.util.livedata.Store import org.thoughtcrime.securesms.util.livedata.Store
import org.whispersystems.signalservice.api.subscriptions.SubscriberId import org.whispersystems.signalservice.api.subscriptions.SubscriberId
@ -52,8 +51,6 @@ class SetCurrencyViewModel(
) )
) )
} }
StorageSyncHelper.scheduleSyncForDataChange()
} }
} }

Wyświetl plik

@ -20,7 +20,6 @@ import org.thoughtcrime.securesms.components.settings.app.subscription.DonationE
import org.thoughtcrime.securesms.components.settings.app.subscription.DonationPaymentRepository import org.thoughtcrime.securesms.components.settings.app.subscription.DonationPaymentRepository
import org.thoughtcrime.securesms.components.settings.app.subscription.SubscriptionsRepository import org.thoughtcrime.securesms.components.settings.app.subscription.SubscriptionsRepository
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.subscription.LevelUpdate import org.thoughtcrime.securesms.subscription.LevelUpdate
import org.thoughtcrime.securesms.subscription.Subscriber import org.thoughtcrime.securesms.subscription.Subscriber
import org.thoughtcrime.securesms.subscription.Subscription import org.thoughtcrime.securesms.subscription.Subscription
@ -105,7 +104,7 @@ class SubscribeViewModel(
val usd = PlatformCurrencyUtil.USD val usd = PlatformCurrencyUtil.USD
val newSubscriber = SignalStore.donationsValues().getSubscriber(usd) ?: Subscriber(SubscriberId.generate(), usd.currencyCode) val newSubscriber = SignalStore.donationsValues().getSubscriber(usd) ?: Subscriber(SubscriberId.generate(), usd.currencyCode)
SignalStore.donationsValues().setSubscriber(newSubscriber) SignalStore.donationsValues().setSubscriber(newSubscriber)
StorageSyncHelper.scheduleSyncForDataChange() donationPaymentRepository.scheduleSyncForAccountRecordChange()
} }
} }
}, },

Wyświetl plik

@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.badges.BadgeImageView
import org.thoughtcrime.securesms.badges.BadgeRepository import org.thoughtcrime.securesms.badges.BadgeRepository
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.SpanUtil import org.thoughtcrime.securesms.util.SpanUtil
import org.thoughtcrime.securesms.util.visible import org.thoughtcrime.securesms.util.visible
@ -87,7 +88,7 @@ class ThanksForYourSupportBottomSheetDialogFragment : FixedRoundedCornerBottomSh
val otherBadges = Recipient.self().badges.filterNot { it.id == args.badge.id } val otherBadges = Recipient.self().badges.filterNot { it.id == args.badge.id }
val hasOtherBadges = otherBadges.isNotEmpty() val hasOtherBadges = otherBadges.isNotEmpty()
val displayingBadges = otherBadges.all { it.visible } val displayingBadges = SignalStore.donationsValues().getDisplayBadgesOnProfile()
if (hasOtherBadges && displayingBadges) { if (hasOtherBadges && displayingBadges) {
switch.isChecked = false switch.isChecked = false

Wyświetl plik

@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.subscription.SubscriptionNotification; import org.thoughtcrime.securesms.subscription.SubscriptionNotification;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.whispersystems.signalservice.internal.EmptyResponse; import org.whispersystems.signalservice.internal.EmptyResponse;
import org.whispersystems.signalservice.internal.ServiceResponse; import org.whispersystems.signalservice.internal.ServiceResponse;
@ -85,7 +86,9 @@ public class DonationReceiptRedemptionJob extends BaseJob {
ReceiptCredentialPresentation presentation = new ReceiptCredentialPresentation(presentationBytes); ReceiptCredentialPresentation presentation = new ReceiptCredentialPresentation(presentationBytes);
ServiceResponse<EmptyResponse> response = ApplicationDependencies.getDonationsService() ServiceResponse<EmptyResponse> response = ApplicationDependencies.getDonationsService()
.redeemReceipt(presentation, false, false) .redeemReceipt(presentation,
SignalStore.donationsValues().getDisplayBadgesOnProfile(),
false)
.blockingGet(); .blockingGet();
if (response.getApplicationError().isPresent()) { if (response.getApplicationError().isPresent()) {

Wyświetl plik

@ -221,10 +221,13 @@ public class RefreshOwnProfileJob extends BaseJob {
List<Badge> appBadges = badges.stream().map(Badges::fromServiceBadge).collect(Collectors.toList()); List<Badge> appBadges = badges.stream().map(Badges::fromServiceBadge).collect(Collectors.toList());
if (userHasVisibleBadges && userHasInvisibleBadges) { if (userHasVisibleBadges && userHasInvisibleBadges) {
Log.d(TAG, "Detected mixed visibility of badges. Telling the server to mark them all visible.", true); boolean displayBadgesOnProfile = SignalStore.donationsValues().getDisplayBadgesOnProfile();
Log.d(TAG, "Detected mixed visibility of badges. Telling the server to mark them all " +
(displayBadgesOnProfile ? "" : "not") +
" visible.", true);
BadgeRepository badgeRepository = new BadgeRepository(context); BadgeRepository badgeRepository = new BadgeRepository(context);
badgeRepository.setVisibilityForAllBadges(true, appBadges).blockingSubscribe(); badgeRepository.setVisibilityForAllBadges(displayBadgesOnProfile, appBadges).blockingSubscribe();
} else { } else {
DatabaseFactory.getRecipientDatabase(context) DatabaseFactory.getRecipientDatabase(context)
.setBadges(Recipient.self().getId(), appBadges); .setBadges(Recipient.self().getId(), appBadges);

Wyświetl plik

@ -29,6 +29,7 @@ internal class DonationsValues internal constructor(store: KeyValueStore) : Sign
private const val USER_MANUALLY_CANCELLED = "donation.user.manually.cancelled" private const val USER_MANUALLY_CANCELLED = "donation.user.manually.cancelled"
private const val KEY_LEVEL_OPERATION_PREFIX = "donation.level.operation." private const val KEY_LEVEL_OPERATION_PREFIX = "donation.level.operation."
private const val KEY_LEVEL_HISTORY = "donation.level.history" private const val KEY_LEVEL_HISTORY = "donation.level.history"
private const val DISPLAY_BADGES_ON_PROFILE = "donation.display.badges.on.profile"
} }
override fun onFirstEverAppLaunch() = Unit override fun onFirstEverAppLaunch() = Unit
@ -188,4 +189,12 @@ internal class DonationsValues internal constructor(store: KeyValueStore) : Sign
fun clearUserManuallyCancelled() { fun clearUserManuallyCancelled() {
remove(USER_MANUALLY_CANCELLED) remove(USER_MANUALLY_CANCELLED)
} }
fun setDisplayBadgesOnProfile(enabled: Boolean) {
putBoolean(DISPLAY_BADGES_ON_PROFILE, enabled)
}
fun getDisplayBadgesOnProfile(): Boolean {
return getBoolean(DISPLAY_BADGES_ON_PROFILE, false)
}
} }

Wyświetl plik

@ -108,8 +108,9 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor<Signal
boolean primarySendsSms = local.isPrimarySendsSms(); boolean primarySendsSms = local.isPrimarySendsSms();
String e164 = local.getE164(); String e164 = local.getE164();
List<String> defaultReactions = remote.getDefaultReactions().size() > 0 ? remote.getDefaultReactions() : local.getDefaultReactions(); List<String> defaultReactions = remote.getDefaultReactions().size() > 0 ? remote.getDefaultReactions() : local.getDefaultReactions();
boolean matchesRemote = doParamsMatch(remote, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars, payments, universalExpireTimer, primarySendsSms, e164, defaultReactions, subscriber); boolean displayBadgesOnProfile = remote.isDisplayBadgesOnProfile();
boolean matchesLocal = doParamsMatch(local, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars, payments, universalExpireTimer, primarySendsSms, e164, defaultReactions, subscriber); boolean matchesRemote = doParamsMatch(remote, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars, payments, universalExpireTimer, primarySendsSms, e164, defaultReactions, subscriber, displayBadgesOnProfile);
boolean matchesLocal = doParamsMatch(local, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars, payments, universalExpireTimer, primarySendsSms, e164, defaultReactions, subscriber, displayBadgesOnProfile);
if (matchesRemote) { if (matchesRemote) {
return remote; return remote;
@ -139,6 +140,7 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor<Signal
.setE164(e164) .setE164(e164)
.setDefaultReactions(defaultReactions) .setDefaultReactions(defaultReactions)
.setSubscriber(subscriber) .setSubscriber(subscriber)
.setDisplayBadgesOnProfile(displayBadgesOnProfile)
.build(); .build();
} }
} }
@ -179,7 +181,8 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor<Signal
boolean primarySendsSms, boolean primarySendsSms,
String e164, String e164,
@NonNull List <String> defaultReactions, @NonNull List <String> defaultReactions,
@NonNull SignalAccountRecord.Subscriber subscriber) @NonNull SignalAccountRecord.Subscriber subscriber,
boolean displayBadgesOnProfile)
{ {
return Arrays.equals(contact.serializeUnknownFields(), unknownFields) && return Arrays.equals(contact.serializeUnknownFields(), unknownFields) &&
Objects.equals(contact.getGivenName().or(""), givenName) && Objects.equals(contact.getGivenName().or(""), givenName) &&
@ -201,6 +204,7 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor<Signal
contact.getUniversalExpireTimer() == universalExpireTimer && contact.getUniversalExpireTimer() == universalExpireTimer &&
contact.isPrimarySendsSms() == primarySendsSms && contact.isPrimarySendsSms() == primarySendsSms &&
Objects.equals(contact.getPinnedConversations(), pinnedConversations) && Objects.equals(contact.getPinnedConversations(), pinnedConversations) &&
Objects.equals(contact.getSubscriber(), subscriber); Objects.equals(contact.getSubscriber(), subscriber) &&
contact.isDisplayBadgesOnProfile() == displayBadgesOnProfile;
} }
} }

Wyświetl plik

@ -133,6 +133,7 @@ public final class StorageSyncHelper {
.setE164(TextSecurePreferences.getLocalNumber(context)) .setE164(TextSecurePreferences.getLocalNumber(context))
.setDefaultReactions(SignalStore.emojiValues().getReactions()) .setDefaultReactions(SignalStore.emojiValues().getReactions())
.setSubscriber(StorageSyncModels.localToRemoteSubscriber(SignalStore.donationsValues().getSubscriber())) .setSubscriber(StorageSyncModels.localToRemoteSubscriber(SignalStore.donationsValues().getSubscriber()))
.setDisplayBadgesOnProfile(SignalStore.donationsValues().getDisplayBadgesOnProfile())
.build(); .build();
return SignalStorageRecord.forAccount(account); return SignalStorageRecord.forAccount(account);
@ -156,6 +157,7 @@ public final class StorageSyncHelper {
SignalStore.paymentsValues().setEnabledAndEntropy(update.getNew().getPayments().isEnabled(), Entropy.fromBytes(update.getNew().getPayments().getEntropy().orNull())); SignalStore.paymentsValues().setEnabledAndEntropy(update.getNew().getPayments().isEnabled(), Entropy.fromBytes(update.getNew().getPayments().getEntropy().orNull()));
SignalStore.settings().setUniversalExpireTimer(update.getNew().getUniversalExpireTimer()); SignalStore.settings().setUniversalExpireTimer(update.getNew().getUniversalExpireTimer());
SignalStore.emojiValues().setReactions(update.getNew().getDefaultReactions()); SignalStore.emojiValues().setReactions(update.getNew().getDefaultReactions());
SignalStore.donationsValues().setDisplayBadgesOnProfile(update.getNew().isDisplayBadgesOnProfile());
Subscriber subscriber = StorageSyncModels.remoteToLocalSubscriber(update.getNew().getSubscriber()); Subscriber subscriber = StorageSyncModels.remoteToLocalSubscriber(update.getNew().getSubscriber());
if (subscriber != null) { if (subscriber != null) {

Wyświetl plik

@ -158,6 +158,10 @@ public final class SignalAccountRecord implements SignalRecord {
diff.add("Subscriber"); diff.add("Subscriber");
} }
if (!Objects.equals(this.isDisplayBadgesOnProfile(), that.isDisplayBadgesOnProfile())) {
diff.add("DisplayBadgesOnProfile");
}
return diff.toString(); return diff.toString();
} else { } else {
return "Different class. " + getClass().getSimpleName() + " | " + other.getClass().getSimpleName(); return "Different class. " + getClass().getSimpleName() + " | " + other.getClass().getSimpleName();
@ -252,6 +256,10 @@ public final class SignalAccountRecord implements SignalRecord {
return subscriber; return subscriber;
} }
public boolean isDisplayBadgesOnProfile() {
return proto.getDisplayBadgesOnProfile();
}
AccountRecord toProto() { AccountRecord toProto() {
return proto; return proto;
} }
@ -575,6 +583,11 @@ public final class SignalAccountRecord implements SignalRecord {
return this; return this;
} }
public Builder setDisplayBadgesOnProfile(boolean displayBadgesOnProfile) {
builder.setDisplayBadgesOnProfile(displayBadgesOnProfile);
return this;
}
public SignalAccountRecord build() { public SignalAccountRecord build() {
AccountRecord proto = builder.build(); AccountRecord proto = builder.build();

Wyświetl plik

@ -150,4 +150,5 @@ message AccountRecord {
repeated string preferredReactionEmoji = 20; repeated string preferredReactionEmoji = 20;
bytes subscriberId = 21; bytes subscriberId = 21;
string subscriberCurrencyCode = 22; string subscriberCurrencyCode = 22;
bool displayBadgesOnProfile = 23;
} }