Inline the username flag.
This commit is contained in:
parent
bd3b779282
commit
8ad77ac7aa
11 changed files with 14 additions and 51 deletions
|
@ -103,7 +103,7 @@ public abstract class ContactSelectionActivity extends PassphraseRequiredActivit
|
||||||
private void initializeContactFilterView() {
|
private void initializeContactFilterView() {
|
||||||
this.contactFilterView = findViewById(R.id.contact_filter_edit_text);
|
this.contactFilterView = findViewById(R.id.contact_filter_edit_text);
|
||||||
|
|
||||||
if (getResources().getDisplayMetrics().heightPixels >= DimensionUnit.DP.toPixels(600) || !FeatureFlags.usernames()) {
|
if (getResources().getDisplayMetrics().heightPixels >= DimensionUnit.DP.toPixels(600)) {
|
||||||
this.contactFilterView.focusAndShowKeyboard();
|
this.contactFilterView.focusAndShowKeyboard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -894,7 +894,7 @@ public final class ContactSelectionListFragment extends LoggingFragment {
|
||||||
builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.NEW_GROUP.getCode());
|
builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.NEW_GROUP.getCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (findByCallback != null && FeatureFlags.usernames()) {
|
if (findByCallback != null) {
|
||||||
builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.FIND_BY_USERNAME.getCode());
|
builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.FIND_BY_USERNAME.getCode());
|
||||||
builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.FIND_BY_PHONE_NUMBER.getCode());
|
builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.FIND_BY_PHONE_NUMBER.getCode());
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
||||||
import org.thoughtcrime.securesms.R
|
import org.thoughtcrime.securesms.R
|
||||||
import org.thoughtcrime.securesms.keyvalue.AccountValues.UsernameSyncState
|
import org.thoughtcrime.securesms.keyvalue.AccountValues.UsernameSyncState
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays a reminder message when the local username gets out of sync with
|
* Displays a reminder message when the local username gets out of sync with
|
||||||
|
@ -42,14 +41,10 @@ class UsernameOutOfSyncReminder : Reminder(NO_RESOURCE) {
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun isEligible(): Boolean {
|
fun isEligible(): Boolean {
|
||||||
return if (FeatureFlags.usernames()) {
|
return when (SignalStore.account().usernameSyncState) {
|
||||||
when (SignalStore.account().usernameSyncState) {
|
UsernameSyncState.USERNAME_AND_LINK_CORRUPTED -> true
|
||||||
UsernameSyncState.USERNAME_AND_LINK_CORRUPTED -> true
|
UsernameSyncState.LINK_CORRUPTED -> true
|
||||||
UsernameSyncState.LINK_CORRUPTED -> true
|
UsernameSyncState.IN_SYNC -> false
|
||||||
UsernameSyncState.IN_SYNC -> false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -363,7 +363,7 @@ class AppSettingsFragment : DSLSettingsFragment(
|
||||||
summaryView.visibility = View.VISIBLE
|
summaryView.visibility = View.VISIBLE
|
||||||
avatarView.visibility = View.VISIBLE
|
avatarView.visibility = View.VISIBLE
|
||||||
|
|
||||||
if (FeatureFlags.usernames() && SignalStore.account().usernameSyncState == AccountValues.UsernameSyncState.IN_SYNC) {
|
if (SignalStore.account().usernameSyncState == AccountValues.UsernameSyncState.IN_SYNC) {
|
||||||
qrButton.visibility = View.VISIBLE
|
qrButton.visibility = View.VISIBLE
|
||||||
qrButton.isClickable = true
|
qrButton.isClickable = true
|
||||||
qrButton.setOnClickListener { model.onQrButtonClicked() }
|
qrButton.setOnClickListener { model.onQrButtonClicked() }
|
||||||
|
|
|
@ -20,7 +20,6 @@ import org.thoughtcrime.securesms.search.MessageResult
|
||||||
import org.thoughtcrime.securesms.search.MessageSearchResult
|
import org.thoughtcrime.securesms.search.MessageSearchResult
|
||||||
import org.thoughtcrime.securesms.search.SearchRepository
|
import org.thoughtcrime.securesms.search.SearchRepository
|
||||||
import org.thoughtcrime.securesms.search.ThreadSearchResult
|
import org.thoughtcrime.securesms.search.ThreadSearchResult
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
|
||||||
import org.thoughtcrime.securesms.util.UsernameUtil
|
import org.thoughtcrime.securesms.util.UsernameUtil
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
@ -189,14 +188,10 @@ class ContactSearchPagedDataSource(
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (FeatureFlags.usernames()) {
|
return NumberUtil.isVisuallyValidNumberOrEmail(query)
|
||||||
NumberUtil.isVisuallyValidNumberOrEmail(query)
|
|
||||||
} else {
|
|
||||||
NumberUtil.isValidSmsOrEmail(query)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
private fun isPossiblyUsername(query: String?): Boolean {
|
private fun isPossiblyUsername(query: String?): Boolean {
|
||||||
return query != null && FeatureFlags.usernames() && UsernameUtil.isValidUsernameForSearch(query)
|
return query != null && UsernameUtil.isValidUsernameForSearch(query)
|
||||||
}
|
}
|
||||||
private fun getPossiblePhoneNumber(section: ContactSearchConfiguration.Section.PhoneNumber, query: String?): List<ContactSearchData> {
|
private fun getPossiblePhoneNumber(section: ContactSearchConfiguration.Section.PhoneNumber, query: String?): List<ContactSearchData> {
|
||||||
return if (isPossiblyPhoneNumber(query)) {
|
return if (isPossiblyPhoneNumber(query)) {
|
||||||
|
|
|
@ -155,9 +155,7 @@ public class RefreshOwnProfileJob extends BaseJob {
|
||||||
|
|
||||||
StoryOnboardingDownloadJob.Companion.enqueueIfNeeded();
|
StoryOnboardingDownloadJob.Companion.enqueueIfNeeded();
|
||||||
|
|
||||||
if (FeatureFlags.usernames()) {
|
checkUsernameIsInSync();
|
||||||
checkUsernameIsInSync();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setExpiringProfileKeyCredential(@NonNull Recipient recipient,
|
private void setExpiringProfileKeyCredential(@NonNull Recipient recipient,
|
||||||
|
|
|
@ -397,8 +397,7 @@ public final class Megaphones {
|
||||||
long phoneNumberDiscoveryDisabledAt = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityModeTimestamp();
|
long phoneNumberDiscoveryDisabledAt = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityModeTimestamp();
|
||||||
PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode listingMode = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode();
|
PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode listingMode = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode();
|
||||||
|
|
||||||
return FeatureFlags.usernames() &&
|
return !hasUsername &&
|
||||||
!hasUsername &&
|
|
||||||
listingMode.isUndiscoverable() &&
|
listingMode.isUndiscoverable() &&
|
||||||
!hasCompleted &&
|
!hasCompleted &&
|
||||||
phoneNumberDiscoveryDisabledAt > 0 &&
|
phoneNumberDiscoveryDisabledAt > 0 &&
|
||||||
|
|
|
@ -37,7 +37,6 @@ import org.thoughtcrime.securesms.profiles.ProfileName
|
||||||
import org.thoughtcrime.securesms.profiles.manage.EditProfileViewModel.AvatarState
|
import org.thoughtcrime.securesms.profiles.manage.EditProfileViewModel.AvatarState
|
||||||
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository.UsernameDeleteResult
|
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository.UsernameDeleteResult
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
|
||||||
import org.thoughtcrime.securesms.util.NameUtil.getAbbreviation
|
import org.thoughtcrime.securesms.util.NameUtil.getAbbreviation
|
||||||
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
||||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||||
|
@ -128,7 +127,7 @@ class EditProfileFragment : LoggingFragment() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FeatureFlags.usernames() && SignalStore.account().username != null && SignalStore.account().usernameSyncState != AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) {
|
if (SignalStore.account().username != null && SignalStore.account().usernameSyncState != AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) {
|
||||||
binding.usernameLinkContainer.setOnClickListener {
|
binding.usernameLinkContainer.setOnClickListener {
|
||||||
findNavController().safeNavigate(EditProfileFragmentDirections.actionManageProfileFragmentToUsernameLinkFragment())
|
findNavController().safeNavigate(EditProfileFragmentDirections.actionManageProfileFragmentToUsernameLinkFragment())
|
||||||
}
|
}
|
||||||
|
@ -165,14 +164,7 @@ class EditProfileFragment : LoggingFragment() {
|
||||||
viewModel.about.observe(viewLifecycleOwner) { presentAbout(it) }
|
viewModel.about.observe(viewLifecycleOwner) { presentAbout(it) }
|
||||||
viewModel.aboutEmoji.observe(viewLifecycleOwner) { presentAboutEmoji(it) }
|
viewModel.aboutEmoji.observe(viewLifecycleOwner) { presentAboutEmoji(it) }
|
||||||
viewModel.badge.observe(viewLifecycleOwner) { presentBadge(it) }
|
viewModel.badge.observe(viewLifecycleOwner) { presentBadge(it) }
|
||||||
|
viewModel.username.observe(viewLifecycleOwner) { presentUsername(it) }
|
||||||
if (viewModel.shouldShowUsername()) {
|
|
||||||
viewModel.username.observe(viewLifecycleOwner) { presentUsername(it) }
|
|
||||||
} else {
|
|
||||||
binding.manageProfileUsernameContainer.visibility = View.GONE
|
|
||||||
binding.manageProfileDivider.root.visibility = View.GONE
|
|
||||||
binding.usernameInfoText.visibility = View.GONE
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun presentAvatarImage(avatarData: Optional<ByteArray>) {
|
private fun presentAvatarImage(avatarData: Optional<ByteArray>) {
|
||||||
|
|
|
@ -107,10 +107,6 @@ class EditProfileViewModel extends ViewModel {
|
||||||
return UsernameRepository.deleteUsernameAndLink().observeOn(AndroidSchedulers.mainThread());
|
return UsernameRepository.deleteUsernameAndLink().observeOn(AndroidSchedulers.mainThread());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean shouldShowUsername() {
|
|
||||||
return FeatureFlags.usernames();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onAvatarSelected(@NonNull Context context, @Nullable Media media) {
|
public void onAvatarSelected(@NonNull Context context, @Nullable Media media) {
|
||||||
previousAvatar = internalAvatarState.getValue() != null ? internalAvatarState.getValue().getAvatar() : null;
|
previousAvatar = internalAvatarState.getValue() != null ? internalAvatarState.getValue().getAvatar() : null;
|
||||||
|
|
||||||
|
|
|
@ -680,11 +680,7 @@ public class Recipient {
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Optional<String> getUsername() {
|
public @NonNull Optional<String> getUsername() {
|
||||||
if (FeatureFlags.usernames()) {
|
return OptionalUtil.absentIfEmpty(username);
|
||||||
return OptionalUtil.absentIfEmpty(username);
|
|
||||||
} else {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Optional<String> getE164() {
|
public @NonNull Optional<String> getE164() {
|
||||||
|
|
|
@ -107,7 +107,6 @@ public final class FeatureFlags {
|
||||||
public static final String PROMPT_FOR_NOTIFICATION_LOGS = "android.logs.promptNotifications";
|
public static final String PROMPT_FOR_NOTIFICATION_LOGS = "android.logs.promptNotifications";
|
||||||
private static final String PROMPT_FOR_NOTIFICATION_CONFIG = "android.logs.promptNotificationsConfig";
|
private static final String PROMPT_FOR_NOTIFICATION_CONFIG = "android.logs.promptNotificationsConfig";
|
||||||
public static final String PROMPT_BATTERY_SAVER = "android.promptBatterySaver";
|
public static final String PROMPT_BATTERY_SAVER = "android.promptBatterySaver";
|
||||||
public static final String USERNAMES = "android.usernames";
|
|
||||||
public static final String INSTANT_VIDEO_PLAYBACK = "android.instantVideoPlayback.1";
|
public static final String INSTANT_VIDEO_PLAYBACK = "android.instantVideoPlayback.1";
|
||||||
public static final String CRASH_PROMPT_CONFIG = "android.crashPromptConfig";
|
public static final String CRASH_PROMPT_CONFIG = "android.crashPromptConfig";
|
||||||
private static final String SEPA_DEBIT_DONATIONS = "android.sepa.debit.donations.5";
|
private static final String SEPA_DEBIT_DONATIONS = "android.sepa.debit.donations.5";
|
||||||
|
@ -180,7 +179,6 @@ public final class FeatureFlags {
|
||||||
PROMPT_FOR_NOTIFICATION_LOGS,
|
PROMPT_FOR_NOTIFICATION_LOGS,
|
||||||
PROMPT_FOR_NOTIFICATION_CONFIG,
|
PROMPT_FOR_NOTIFICATION_CONFIG,
|
||||||
PROMPT_BATTERY_SAVER,
|
PROMPT_BATTERY_SAVER,
|
||||||
USERNAMES,
|
|
||||||
INSTANT_VIDEO_PLAYBACK,
|
INSTANT_VIDEO_PLAYBACK,
|
||||||
CRASH_PROMPT_CONFIG,
|
CRASH_PROMPT_CONFIG,
|
||||||
SEPA_DEBIT_DONATIONS,
|
SEPA_DEBIT_DONATIONS,
|
||||||
|
@ -259,7 +257,6 @@ public final class FeatureFlags {
|
||||||
PROMPT_FOR_NOTIFICATION_LOGS,
|
PROMPT_FOR_NOTIFICATION_LOGS,
|
||||||
PROMPT_FOR_NOTIFICATION_CONFIG,
|
PROMPT_FOR_NOTIFICATION_CONFIG,
|
||||||
PROMPT_BATTERY_SAVER,
|
PROMPT_BATTERY_SAVER,
|
||||||
USERNAMES,
|
|
||||||
CRASH_PROMPT_CONFIG,
|
CRASH_PROMPT_CONFIG,
|
||||||
CALLING_REACTIONS,
|
CALLING_REACTIONS,
|
||||||
NOTIFICATION_THUMBNAIL_BLOCKLIST,
|
NOTIFICATION_THUMBNAIL_BLOCKLIST,
|
||||||
|
@ -344,11 +341,6 @@ public final class FeatureFlags {
|
||||||
Log.i(TAG, "[Disk] After : " + result.getDisk().toString());
|
Log.i(TAG, "[Disk] After : " + result.getDisk().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Creating usernames, sending messages by username. */
|
|
||||||
public static synchronized boolean usernames() {
|
|
||||||
return getBoolean(USERNAMES, false) || phoneNumberPrivacy();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maximum number of members allowed in a group.
|
* Maximum number of members allowed in a group.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue