From 111c8367a9e3c12681f6406879a19dd89a813078 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 9 Nov 2023 11:13:44 -0500 Subject: [PATCH] Fix discoverability setting persistence during registration. --- .../securesms/jobs/RefreshOwnProfileJob.java | 2 +- .../profiles/edit/CreateProfileFragment.java | 6 ++-- ...t => WhoCanFindMeByPhoneNumberFragment.kt} | 24 ++++++------- .../WhoCanFindMeByPhoneNumberRepository.kt | 36 +++++++++++++++++++ ...e.kt => WhoCanFindMeByPhoneNumberState.kt} | 2 +- ... => WhoCanFindMeByPhoneNumberViewModel.kt} | 18 ++++++---- .../pnp/WhoCanSeeMyPhoneNumberRepository.kt | 31 ---------------- ..._can_find_me_by_phone_number_fragment.xml} | 0 .../main/res/navigation/create_profile.xml | 2 +- 9 files changed, 65 insertions(+), 56 deletions(-) rename app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/{WhoCanSeeMyPhoneNumberFragment.kt => WhoCanFindMeByPhoneNumberFragment.kt} (70%) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt rename app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/{WhoCanSeeMyPhoneNumberState.kt => WhoCanFindMeByPhoneNumberState.kt} (63%) rename app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/{WhoCanSeeMyPhoneNumberViewModel.kt => WhoCanFindMeByPhoneNumberViewModel.kt} (58%) delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberRepository.kt rename app/src/main/res/layout/{who_can_see_my_phone_number_fragment.xml => who_can_find_me_by_phone_number_fragment.xml} (100%) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java index 27ef200a25..918e85e77b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java @@ -267,7 +267,7 @@ public class RefreshOwnProfileJob extends BaseJob { if (TextUtils.isEmpty(localUsernameHash) && TextUtils.isEmpty(remoteUsernameHash)) { Log.d(TAG, "Local and remote username hash are both empty. Considering validated."); } else if (!Objects.equals(localUsernameHash, remoteUsernameHash)) { - Log.w(TAG, "Local username hash does not match server username hash. Local hash: " + (TextUtils.isEmpty(localUsername) ? "empty" : "present") + ", Remote hash: " + (TextUtils.isEmpty(localUsername) ? "empty" : "present")); + Log.w(TAG, "Local username hash does not match server username hash. Local hash: " + (TextUtils.isEmpty(localUsername) ? "empty" : "present") + ", Remote hash: " + (TextUtils.isEmpty(remoteUsernameHash) ? "empty" : "present")); SignalStore.account().setUsernameSyncState(AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED); return; } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/CreateProfileFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/CreateProfileFragment.java index 88cf5699c6..0152291ee2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/CreateProfileFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/CreateProfileFragment.java @@ -37,7 +37,7 @@ import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.mediasend.Media; import org.thoughtcrime.securesms.mms.GlideApp; -import org.thoughtcrime.securesms.profiles.edit.pnp.WhoCanSeeMyPhoneNumberFragment; +import org.thoughtcrime.securesms.profiles.edit.pnp.WhoCanFindMeByPhoneNumberFragment; import org.thoughtcrime.securesms.profiles.manage.EditProfileNameFragment; import org.thoughtcrime.securesms.providers.BlobProvider; import org.thoughtcrime.securesms.util.CommunicationActions; @@ -210,8 +210,8 @@ public class CreateProfileFragment extends LoggingFragment { binding.profileDescriptionText.setOnLinkClickListener(v -> CommunicationActions.openBrowserLink(requireContext(), getString(R.string.EditProfileFragment__support_link))); if (FeatureFlags.phoneNumberPrivacy()) { - getParentFragmentManager().setFragmentResultListener(WhoCanSeeMyPhoneNumberFragment.REQUEST_KEY, getViewLifecycleOwner(), (requestKey, result) -> { - if (WhoCanSeeMyPhoneNumberFragment.REQUEST_KEY.equals(requestKey)) { + getParentFragmentManager().setFragmentResultListener(WhoCanFindMeByPhoneNumberFragment.REQUEST_KEY, getViewLifecycleOwner(), (requestKey, result) -> { + if (WhoCanFindMeByPhoneNumberFragment.REQUEST_KEY.equals(requestKey)) { presentWhoCanFindMeDescription(SignalStore.phoneNumberPrivacy().getPhoneNumberListingMode()); } }); diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberFragment.kt similarity index 70% rename from app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberFragment.kt rename to app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberFragment.kt index deb5ddbadd..fd1ec71992 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberFragment.kt @@ -13,16 +13,16 @@ import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsText import org.thoughtcrime.securesms.components.settings.configure -import org.thoughtcrime.securesms.databinding.WhoCanSeeMyPhoneNumberFragmentBinding +import org.thoughtcrime.securesms.databinding.WhoCanFindMeByPhoneNumberFragmentBinding import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter /** * Allows the user to select who can see their phone number during registration. */ -class WhoCanSeeMyPhoneNumberFragment : DSLSettingsFragment( +class WhoCanFindMeByPhoneNumberFragment : DSLSettingsFragment( titleId = R.string.WhoCanSeeMyPhoneNumberFragment__who_can_find_me_by_number, - layoutId = R.layout.who_can_see_my_phone_number_fragment + layoutId = R.layout.who_can_find_me_by_phone_number_fragment ) { companion object { @@ -32,10 +32,10 @@ class WhoCanSeeMyPhoneNumberFragment : DSLSettingsFragment( const val REQUEST_KEY = "who_can_see_my_phone_number_key" } - private val viewModel: WhoCanSeeMyPhoneNumberViewModel by viewModels() + private val viewModel: WhoCanFindMeByPhoneNumberViewModel by viewModels() private val lifecycleDisposable = LifecycleDisposable() - private val binding by ViewBinderDelegate(WhoCanSeeMyPhoneNumberFragmentBinding::bind) + private val binding by ViewBinderDelegate(WhoCanFindMeByPhoneNumberFragmentBinding::bind) override fun bindAdapter(adapter: MappingAdapter) { require(FeatureFlags.phoneNumberPrivacy()) @@ -53,25 +53,25 @@ class WhoCanSeeMyPhoneNumberFragment : DSLSettingsFragment( } } - private fun getConfiguration(state: WhoCanSeeMyPhoneNumberState): DSLConfiguration { + private fun getConfiguration(state: WhoCanFindMeByPhoneNumberState): DSLConfiguration { return configure { radioPref( title = DSLSettingsText.from(R.string.PhoneNumberPrivacy_everyone), - isChecked = state == WhoCanSeeMyPhoneNumberState.EVERYONE, - onClick = { viewModel.onEveryoneCanSeeMyPhoneNumberSelected() } + isChecked = state == WhoCanFindMeByPhoneNumberState.EVERYONE, + onClick = { viewModel.onEveryoneCanFindMeByPhoneNumberSelected() } ) radioPref( title = DSLSettingsText.from(R.string.PhoneNumberPrivacy_nobody), - isChecked = state == WhoCanSeeMyPhoneNumberState.NOBODY, - onClick = { viewModel.onNobodyCanSeeMyPhoneNumberSelected() } + isChecked = state == WhoCanFindMeByPhoneNumberState.NOBODY, + onClick = { viewModel.onNobodyCanFindMeByPhoneNumberSelected() } ) textPref( title = DSLSettingsText.from( when (state) { - WhoCanSeeMyPhoneNumberState.EVERYONE -> R.string.WhoCanSeeMyPhoneNumberFragment__anyone_who_has - WhoCanSeeMyPhoneNumberState.NOBODY -> R.string.WhoCanSeeMyPhoneNumberFragment__nobody_on_signal + WhoCanFindMeByPhoneNumberState.EVERYONE -> R.string.WhoCanSeeMyPhoneNumberFragment__anyone_who_has + WhoCanFindMeByPhoneNumberState.NOBODY -> R.string.WhoCanSeeMyPhoneNumberFragment__nobody_on_signal }, DSLSettingsText.TextAppearanceModifier(R.style.Signal_Text_BodyMedium), DSLSettingsText.ColorModifier(ContextCompat.getColor(requireContext(), R.color.signal_colorOnSurfaceVariant)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt new file mode 100644 index 0000000000..c9867f8c80 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt @@ -0,0 +1,36 @@ +package org.thoughtcrime.securesms.profiles.edit.pnp + +import io.reactivex.rxjava3.core.Completable +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies +import org.thoughtcrime.securesms.jobs.RefreshAttributesJob +import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues +import org.thoughtcrime.securesms.keyvalue.SignalStore + +/** + * Manages the current phone-number listing state. + */ +class WhoCanFindMeByPhoneNumberRepository { + + fun getCurrentState(): WhoCanFindMeByPhoneNumberState { + return when (SignalStore.phoneNumberPrivacy().phoneNumberListingMode) { + PhoneNumberPrivacyValues.PhoneNumberListingMode.LISTED -> WhoCanFindMeByPhoneNumberState.EVERYONE + PhoneNumberPrivacyValues.PhoneNumberListingMode.UNLISTED -> WhoCanFindMeByPhoneNumberState.NOBODY + } + } + + fun onSave(whoCanFindMeByPhoneNumberState: WhoCanFindMeByPhoneNumberState): Completable { + return Completable.fromAction { + when (whoCanFindMeByPhoneNumberState) { + WhoCanFindMeByPhoneNumberState.EVERYONE -> { + SignalStore.phoneNumberPrivacy().phoneNumberListingMode = PhoneNumberPrivacyValues.PhoneNumberListingMode.LISTED + } + WhoCanFindMeByPhoneNumberState.NOBODY -> { + SignalStore.phoneNumberPrivacy().phoneNumberSharingMode = PhoneNumberPrivacyValues.PhoneNumberSharingMode.NOBODY + SignalStore.phoneNumberPrivacy().phoneNumberListingMode = PhoneNumberPrivacyValues.PhoneNumberListingMode.UNLISTED + } + } + + ApplicationDependencies.getJobManager().add(RefreshAttributesJob()) + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberState.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberState.kt similarity index 63% rename from app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberState.kt rename to app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberState.kt index f8e935b11e..e05e668d4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberState.kt @@ -1,6 +1,6 @@ package org.thoughtcrime.securesms.profiles.edit.pnp -enum class WhoCanSeeMyPhoneNumberState { +enum class WhoCanFindMeByPhoneNumberState { EVERYONE, NOBODY } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberViewModel.kt similarity index 58% rename from app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberViewModel.kt rename to app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberViewModel.kt index 0c8735cd49..2b0567a60d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberViewModel.kt @@ -7,20 +7,24 @@ import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.disposables.CompositeDisposable import org.thoughtcrime.securesms.util.rx.RxStore -class WhoCanSeeMyPhoneNumberViewModel : ViewModel() { +class WhoCanFindMeByPhoneNumberViewModel : ViewModel() { - private val repository = WhoCanSeeMyPhoneNumberRepository() + private val repository = WhoCanFindMeByPhoneNumberRepository() private val store = RxStore(repository.getCurrentState()) private val disposables = CompositeDisposable() - val state: Flowable = store.stateFlowable.subscribeOn(AndroidSchedulers.mainThread()) + val state: Flowable = store.stateFlowable.subscribeOn(AndroidSchedulers.mainThread()) - fun onEveryoneCanSeeMyPhoneNumberSelected() { - store.update { WhoCanSeeMyPhoneNumberState.EVERYONE } + fun onEveryoneCanFindMeByPhoneNumberSelected() { + store.update { + WhoCanFindMeByPhoneNumberState.EVERYONE + } } - fun onNobodyCanSeeMyPhoneNumberSelected() { - store.update { WhoCanSeeMyPhoneNumberState.NOBODY } + fun onNobodyCanFindMeByPhoneNumberSelected() { + store.update { + WhoCanFindMeByPhoneNumberState.NOBODY + } } fun onSave(): Completable { diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberRepository.kt deleted file mode 100644 index df76378886..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberRepository.kt +++ /dev/null @@ -1,31 +0,0 @@ -package org.thoughtcrime.securesms.profiles.edit.pnp - -import io.reactivex.rxjava3.core.Completable -import org.thoughtcrime.securesms.dependencies.ApplicationDependencies -import org.thoughtcrime.securesms.jobs.RefreshAttributesJob -import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues -import org.thoughtcrime.securesms.keyvalue.SignalStore - -/** - * Manages the current phone-number listing state. - */ -class WhoCanSeeMyPhoneNumberRepository { - - fun getCurrentState(): WhoCanSeeMyPhoneNumberState { - return when (SignalStore.phoneNumberPrivacy().phoneNumberListingMode) { - PhoneNumberPrivacyValues.PhoneNumberListingMode.LISTED -> WhoCanSeeMyPhoneNumberState.EVERYONE - PhoneNumberPrivacyValues.PhoneNumberListingMode.UNLISTED -> WhoCanSeeMyPhoneNumberState.NOBODY - } - } - - fun onSave(whoCanSeeMyPhoneNumberState: WhoCanSeeMyPhoneNumberState): Completable { - return Completable.fromAction { - SignalStore.phoneNumberPrivacy().phoneNumberListingMode = when (whoCanSeeMyPhoneNumberState) { - WhoCanSeeMyPhoneNumberState.EVERYONE -> PhoneNumberPrivacyValues.PhoneNumberListingMode.LISTED - WhoCanSeeMyPhoneNumberState.NOBODY -> PhoneNumberPrivacyValues.PhoneNumberListingMode.UNLISTED - } - - ApplicationDependencies.getJobManager().add(RefreshAttributesJob()) - } - } -} diff --git a/app/src/main/res/layout/who_can_see_my_phone_number_fragment.xml b/app/src/main/res/layout/who_can_find_me_by_phone_number_fragment.xml similarity index 100% rename from app/src/main/res/layout/who_can_see_my_phone_number_fragment.xml rename to app/src/main/res/layout/who_can_find_me_by_phone_number_fragment.xml diff --git a/app/src/main/res/navigation/create_profile.xml b/app/src/main/res/navigation/create_profile.xml index 148bf5c975..bd8fcb952b 100644 --- a/app/src/main/res/navigation/create_profile.xml +++ b/app/src/main/res/navigation/create_profile.xml @@ -43,7 +43,7 @@