mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-27 13:13:43 +00:00
Fix discoverability setting persistence during registration.
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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))
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.thoughtcrime.securesms.profiles.edit.pnp
|
||||
|
||||
enum class WhoCanSeeMyPhoneNumberState {
|
||||
enum class WhoCanFindMeByPhoneNumberState {
|
||||
EVERYONE,
|
||||
NOBODY
|
||||
}
|
||||
@@ -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<WhoCanSeeMyPhoneNumberState> = store.stateFlowable.subscribeOn(AndroidSchedulers.mainThread())
|
||||
val state: Flowable<WhoCanFindMeByPhoneNumberState> = 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 {
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user