- final var payments = remote.getPayments().getEntropy().isPresent() ? remote.getPayments() : local.getPayments();
- final var subscriber = remote.getSubscriber().getId().isPresent()
- ? remote.getSubscriber()
- : local.getSubscriber();
- final var storyViewReceiptsState = remote.getStoryViewReceiptsState() == OptionalBool.UNSET
- ? local.getStoryViewReceiptsState()
- : remote.getStoryViewReceiptsState();
- final var unknownFields = remote.serializeUnknownFields();
- final var avatarUrlPath = OptionalUtil.or(remote.getAvatarUrlPath(), local.getAvatarUrlPath()).orElse("");
- final var profileKey = OptionalUtil.or(remote.getProfileKey(), local.getProfileKey()).orElse(null);
- final var noteToSelfArchived = remote.isNoteToSelfArchived();
- final var noteToSelfForcedUnread = remote.isNoteToSelfForcedUnread();
- final var readReceipts = remote.isReadReceiptsEnabled();
- final var typingIndicators = remote.isTypingIndicatorsEnabled();
- final var sealedSenderIndicators = remote.isSealedSenderIndicatorsEnabled();
- final var linkPreviews = remote.isLinkPreviewsEnabled();
- final var unlisted = remote.isPhoneNumberUnlisted();
- final var pinnedConversations = remote.getPinnedConversations();
- final var phoneNumberSharingMode = remote.getPhoneNumberSharingMode();
- final var preferContactAvatars = remote.isPreferContactAvatars();
- final var universalExpireTimer = remote.getUniversalExpireTimer();
- final var e164 = account.isPrimaryDevice() ? local.getE164() : remote.getE164();
- final var defaultReactions = !remote.getDefaultReactions().isEmpty()
- ? remote.getDefaultReactions()
- : local.getDefaultReactions();
- final var displayBadgesOnProfile = remote.isDisplayBadgesOnProfile();
- final var subscriptionManuallyCancelled = remote.isSubscriptionManuallyCancelled();
- final var keepMutedChatsArchived = remote.isKeepMutedChatsArchived();
- final var hasSetMyStoriesPrivacy = remote.hasSetMyStoriesPrivacy();
- final var hasViewedOnboardingStory = remote.hasViewedOnboardingStory() || local.hasViewedOnboardingStory();
- final var storiesDisabled = remote.isStoriesDisabled();
- final var hasSeenGroupStoryEducation = remote.hasSeenGroupStoryEducationSheet()
- || local.hasSeenGroupStoryEducationSheet();
- boolean hasSeenUsernameOnboarding = remote.hasCompletedUsernameOnboarding()
- || local.hasCompletedUsernameOnboarding();
- final var username = remote.getUsername();
- final var usernameLink = remote.getUsernameLink();
-
- final var mergedBuilder = new SignalAccountRecord.Builder(remote.getId().getRaw(), unknownFields).setGivenName(
- givenName)
- .setFamilyName(familyName)
- .setAvatarUrlPath(avatarUrlPath)
- .setProfileKey(profileKey)
- .setNoteToSelfArchived(noteToSelfArchived)
- .setNoteToSelfForcedUnread(noteToSelfForcedUnread)
- .setReadReceiptsEnabled(readReceipts)
- .setTypingIndicatorsEnabled(typingIndicators)
- .setSealedSenderIndicatorsEnabled(sealedSenderIndicators)
- .setLinkPreviewsEnabled(linkPreviews)
- .setUnlistedPhoneNumber(unlisted)
- .setPhoneNumberSharingMode(phoneNumberSharingMode)
- .setPinnedConversations(pinnedConversations)
- .setPreferContactAvatars(preferContactAvatars)
- .setPayments(payments.isEnabled(), payments.getEntropy().orElse(null))
- .setUniversalExpireTimer(universalExpireTimer)
- .setDefaultReactions(defaultReactions)
- .setSubscriber(subscriber)
- .setDisplayBadgesOnProfile(displayBadgesOnProfile)
- .setSubscriptionManuallyCancelled(subscriptionManuallyCancelled)
- .setKeepMutedChatsArchived(keepMutedChatsArchived)
- .setHasSetMyStoriesPrivacy(hasSetMyStoriesPrivacy)
- .setHasViewedOnboardingStory(hasViewedOnboardingStory)
- .setStoriesDisabled(storiesDisabled)
- .setHasSeenGroupStoryEducationSheet(hasSeenGroupStoryEducation)
- .setHasCompletedUsernameOnboarding(hasSeenUsernameOnboarding)
- .setStoryViewReceiptsState(storyViewReceiptsState)
- .setUsername(username)
- .setUsernameLink(usernameLink)
- .setE164(e164);
+ final var mergedBuilder = SignalAccountRecord.Companion.newBuilder(remote.unknownFields().toByteArray())
+ .givenName(givenName)
+ .familyName(familyName)
+ .avatarUrlPath(firstNonEmpty(remote.avatarUrlPath, local.avatarUrlPath))
+ .profileKey(firstNonEmpty(remote.profileKey, local.profileKey))
+ .noteToSelfArchived(remote.noteToSelfArchived)
+ .noteToSelfMarkedUnread(remote.noteToSelfMarkedUnread)
+ .readReceipts(remote.readReceipts)
+ .typingIndicators(remote.typingIndicators)
+ .sealedSenderIndicators(remote.sealedSenderIndicators)
+ .linkPreviews(remote.linkPreviews)
+ .unlistedPhoneNumber(remote.unlistedPhoneNumber)
+ .phoneNumberSharingMode(remote.phoneNumberSharingMode)
+ .pinnedConversations(remote.pinnedConversations)
+ .preferContactAvatars(remote.preferContactAvatars)
+ .universalExpireTimer(remote.universalExpireTimer)
+ .preferredReactionEmoji(firstNonEmpty(remote.preferredReactionEmoji, local.preferredReactionEmoji))
+ .subscriberId(firstNonEmpty(remote.subscriberId, local.subscriberId))
+ .subscriberCurrencyCode(firstNonEmpty(remote.subscriberCurrencyCode, local.subscriberCurrencyCode))
+ .backupsSubscriberId(firstNonEmpty(remote.backupsSubscriberId, local.backupsSubscriberId))
+ .backupsSubscriberCurrencyCode(firstNonEmpty(remote.backupsSubscriberCurrencyCode,
+ local.backupsSubscriberCurrencyCode))
+ .displayBadgesOnProfile(remote.displayBadgesOnProfile)
+ .subscriptionManuallyCancelled(remote.subscriptionManuallyCancelled)
+ .keepMutedChatsArchived(remote.keepMutedChatsArchived)
+ .hasSetMyStoriesPrivacy(remote.hasSetMyStoriesPrivacy)
+ .hasViewedOnboardingStory(remote.hasViewedOnboardingStory || local.hasViewedOnboardingStory)
+ .storiesDisabled(remote.storiesDisabled)
+ .hasSeenGroupStoryEducationSheet(remote.hasSeenGroupStoryEducationSheet
+ || local.hasSeenGroupStoryEducationSheet)
+ .hasCompletedUsernameOnboarding(remote.hasCompletedUsernameOnboarding
+ || local.hasCompletedUsernameOnboarding)
+ .storyViewReceiptsEnabled(remote.storyViewReceiptsEnabled == OptionalBool.UNSET
+ ? local.storyViewReceiptsEnabled
+ : remote.storyViewReceiptsEnabled)
+ .username(remote.username)
+ .usernameLink(remote.usernameLink)
+ .e164(account.isPrimaryDevice() ? local.e164 : remote.e164);
+ if (firstNonNull(remote.payments, local.payments) != null) {
+ mergedBuilder.payments(firstNonNull(remote.payments, local.payments));
+ }