diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt index 8efc61224..697b50198 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt @@ -171,15 +171,6 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter sectionHeaderPref(R.string.preferences__internal_preferences_groups_v2) - switchPref( - title = DSLSettingsText.from(R.string.preferences__internal_do_not_create_gv2), - summary = DSLSettingsText.from(R.string.preferences__internal_do_not_create_gv2_description), - isChecked = state.gv2doNotCreateGv2Groups, - onClick = { - viewModel.setGv2DoNotCreateGv2Groups(!state.gv2doNotCreateGv2Groups) - } - ) - switchPref( title = DSLSettingsText.from(R.string.preferences__internal_force_gv2_invites), summary = DSLSettingsText.from(R.string.preferences__internal_force_gv2_invites_description), @@ -209,28 +200,6 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter dividerPref() - sectionHeaderPref(R.string.preferences__internal_preferences_groups_v1_migration) - - switchPref( - title = DSLSettingsText.from(R.string.preferences__internal_do_not_initiate_automigrate), - summary = DSLSettingsText.from(R.string.preferences__internal_do_not_initiate_automigrate_description), - isChecked = state.disableAutoMigrationInitiation, - onClick = { - viewModel.setDisableAutoMigrationInitiation(!state.disableAutoMigrationInitiation) - } - ) - - switchPref( - title = DSLSettingsText.from(R.string.preferences__internal_do_not_notify_automigrate), - summary = DSLSettingsText.from(R.string.preferences__internal_do_not_notify_automigrate_description), - isChecked = state.disableAutoMigrationNotification, - onClick = { - viewModel.setDisableAutoMigrationNotification(!state.disableAutoMigrationNotification) - } - ) - - dividerPref() - sectionHeaderPref(R.string.preferences__internal_network) switchPref( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt index 61b8b702a..850358ab0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt @@ -6,12 +6,9 @@ import org.thoughtcrime.securesms.emoji.EmojiFiles data class InternalSettingsState( val seeMoreUserDetails: Boolean, val shakeToReport: Boolean, - val gv2doNotCreateGv2Groups: Boolean, val gv2forceInvites: Boolean, val gv2ignoreServerChanges: Boolean, val gv2ignoreP2PChanges: Boolean, - val disableAutoMigrationInitiation: Boolean, - val disableAutoMigrationNotification: Boolean, val allowCensorshipSetting: Boolean, val callingServer: String, val callingAudioProcessingMethod: CallManager.AudioProcessingMethod, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt index a627f496c..3cda2e78b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt @@ -38,11 +38,6 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito refresh() } - fun setGv2DoNotCreateGv2Groups(enabled: Boolean) { - preferenceDataStore.putBoolean(InternalValues.GV2_DO_NOT_CREATE_GV2, enabled) - refresh() - } - fun setGv2ForceInvites(enabled: Boolean) { preferenceDataStore.putBoolean(InternalValues.GV2_FORCE_INVITES, enabled) refresh() @@ -58,16 +53,6 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito refresh() } - fun setDisableAutoMigrationInitiation(enabled: Boolean) { - preferenceDataStore.putBoolean(InternalValues.GV2_DISABLE_AUTOMIGRATE_INITIATION, enabled) - refresh() - } - - fun setDisableAutoMigrationNotification(enabled: Boolean) { - preferenceDataStore.putBoolean(InternalValues.GV2_DISABLE_AUTOMIGRATE_NOTIFICATION, enabled) - refresh() - } - fun setAllowCensorshipSetting(enabled: Boolean) { preferenceDataStore.putBoolean(InternalValues.ALLOW_CENSORSHIP_SETTING, enabled) refresh() @@ -125,12 +110,9 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito private fun getState() = InternalSettingsState( seeMoreUserDetails = SignalStore.internalValues().recipientDetails(), shakeToReport = SignalStore.internalValues().shakeToReport(), - gv2doNotCreateGv2Groups = SignalStore.internalValues().gv2DoNotCreateGv2Groups(), gv2forceInvites = SignalStore.internalValues().gv2ForceInvites(), gv2ignoreServerChanges = SignalStore.internalValues().gv2IgnoreServerChanges(), gv2ignoreP2PChanges = SignalStore.internalValues().gv2IgnoreP2PChanges(), - disableAutoMigrationInitiation = SignalStore.internalValues().disableGv1AutoMigrateInitiation(), - disableAutoMigrationNotification = SignalStore.internalValues().disableGv1AutoMigrateNotification(), allowCensorshipSetting = SignalStore.internalValues().allowChangingCensorshipSetting(), callingServer = SignalStore.internalValues().groupCallingServer(), callingAudioProcessingMethod = SignalStore.internalValues().callingAudioProcessingMethod(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt index 5308d09ae..92feca11c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt @@ -3717,7 +3717,8 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) : } /** - * Should only be used for debugging! A very destructive action that clears all known serviceIds. + * Should only be used for debugging! A very destructive action that clears all known serviceIds from people with phone numbers (so that we could eventually + * get them back through CDS). */ fun debugClearServiceIds(recipientId: RecipientId? = null) { writableDatabase @@ -3728,9 +3729,9 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) : ) .run { if (recipientId == null) { - where("$ID != ?", Recipient.self().id) + where("$ID != ? AND $PHONE NOT NULL", Recipient.self().id) } else { - where("$ID = ?", recipientId) + where("$ID = ? AND $PHONE NOT NULL", recipientId) } } .run() diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java index 07f372c44..6bf940b85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java @@ -47,7 +47,7 @@ public final class GroupManager { int disappearingMessagesTimer) throws GroupChangeBusyException, GroupChangeFailedException, IOException { - boolean shouldAttemptToCreateV2 = !mms && !SignalStore.internalValues().gv2DoNotCreateGv2Groups(); + boolean shouldAttemptToCreateV2 = !mms; Set memberIds = getMemberIds(members); if (shouldAttemptToCreateV2) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupsV1MigrationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupsV1MigrationUtil.java index f14a3d692..e45b76c68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupsV1MigrationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupsV1MigrationUtil.java @@ -81,11 +81,6 @@ public final class GroupsV1MigrationUtil { throw new InvalidMigrationStateException(); } - if (!forced && SignalStore.internalValues().disableGv1AutoMigrateInitiation()) { - Log.w(TAG, "Auto migration initiation has been disabled! Skipping."); - throw new InvalidMigrationStateException(); - } - List registeredMembers = RecipientUtil.getEligibleForSending(Recipient.resolvedList(groupRecipient.getParticipantIds())); if (RecipientUtil.ensureUuidsAreAvailable(context, registeredMembers)) { @@ -136,7 +131,7 @@ public final class GroupsV1MigrationUtil { DecryptedGroup decryptedGroup = performLocalMigration(context, gv1Id, threadId, groupRecipient); - if (newlyCreated && decryptedGroup != null && !SignalStore.internalValues().disableGv1AutoMigrateNotification()) { + if (newlyCreated && decryptedGroup != null) { Log.i(TAG, "Sending no-op update to notify others."); GroupManager.sendNoopUpdate(context, gv2MasterKey, decryptedGroup); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsViewModel.java index 85adcfe5d..5f4120a47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsViewModel.java @@ -50,17 +50,8 @@ public final class AddGroupDetailsViewModel extends ViewModel { MutableLiveData> initialMembers = new MutableLiveData<>(); LiveData isValidName = Transformations.map(name, name -> !TextUtils.isEmpty(name)); - members = LiveDataUtil.combineLatest(initialMembers, deleted, AddGroupDetailsViewModel::filterDeletedMembers); - isMms = Transformations.map(members, AddGroupDetailsViewModel::isAnyForcedSms); - - LiveData> membersToCheckGv2CapabilityOf = LiveDataUtil.combineLatest(isMms, members, (forcedMms, memberList) -> { - if (SignalStore.internalValues().gv2DoNotCreateGv2Groups() || forcedMms) { - return Collections.emptyList(); - } else { - return memberList; - } - }); - + members = LiveDataUtil.combineLatest(initialMembers, deleted, AddGroupDetailsViewModel::filterDeletedMembers); + isMms = Transformations.map(members, AddGroupDetailsViewModel::isAnyForcedSms); canSubmitForm = LiveDataUtil.combineLatest(isMms, isValidName, (mms, validName) -> mms || validName); repository.resolveMembers(recipientIds, initialMembers::postValue); diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java index 5e1f91d6a..f5f1372fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java @@ -12,12 +12,9 @@ import java.util.List; public final class InternalValues extends SignalStoreValues { - public static final String GV2_DO_NOT_CREATE_GV2 = "internal.gv2.do_not_create_gv2"; public static final String GV2_FORCE_INVITES = "internal.gv2.force_invites"; public static final String GV2_IGNORE_SERVER_CHANGES = "internal.gv2.ignore_server_changes"; public static final String GV2_IGNORE_P2P_CHANGES = "internal.gv2.ignore_p2p_changes"; - public static final String GV2_DISABLE_AUTOMIGRATE_INITIATION = "internal.gv2.disable_automigrate_initiation"; - public static final String GV2_DISABLE_AUTOMIGRATE_NOTIFICATION = "internal.gv2.disable_automigrate_notification"; public static final String RECIPIENT_DETAILS = "internal.recipient_details"; public static final String ALLOW_CENSORSHIP_SETTING = "internal.force_censorship"; public static final String FORCE_BUILT_IN_EMOJI = "internal.force_built_in_emoji"; @@ -43,13 +40,6 @@ public final class InternalValues extends SignalStoreValues { return Collections.emptyList(); } - /** - * Do not attempt to create GV2 groups, i.e. will force creation of GV1 or MMS groups. - */ - public synchronized boolean gv2DoNotCreateGv2Groups() { - return FeatureFlags.internalUser() && getBoolean(GV2_DO_NOT_CREATE_GV2, false); - } - /** * Members will not be added directly to a GV2 even if they could be. */ @@ -113,22 +103,6 @@ public final class InternalValues extends SignalStoreValues { return FeatureFlags.internalUser() && getBoolean(DELAY_RESENDS, false); } - /** - * Disable initiating a GV1->GV2 auto-migration. You can still recognize a group has been - * auto-migrated. - */ - public synchronized boolean disableGv1AutoMigrateInitiation() { - return FeatureFlags.internalUser() && getBoolean(GV2_DISABLE_AUTOMIGRATE_INITIATION, false); - } - - /** - * Disable sending a group update after an automigration. This will force other group members to - * have to discover the migration on their own. - */ - public synchronized boolean disableGv1AutoMigrateNotification() { - return FeatureFlags.internalUser() && getBoolean(GV2_DISABLE_AUTOMIGRATE_NOTIFICATION, false); - } - /** * Whether or not "shake to report" is enabled. */ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd409826d..59c65a57d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2745,19 +2745,12 @@ Clears onboarding flag and triggers download of onboarding stories. Internal Preferences Groups V2 - Groups V1 Migration - Do not create GV2 groups - Do not attempt to create GV2 groups, i.e. will force creation of GV1 or MMS groups. Force Invites Members will not be added directly to a GV2 even if they could be. Ignore server changes Changes in server\'s response will be ignored, causing passive voice update messages if P2P is also ignored. Ignore P2P changes Changes sent P2P will be ignored. In conjunction with ignoring server changes, will cause passive voice. - Disable Auto-Migration Initiation - Do not attempt to initiate an auto-migration. You will still recognize migrated groups. - Disable Auto-Migration Notification - Do not attempt to notify other users of an auto-migration. They will have to discover it on their own. Payments Copy payments data Copy all payment records to clipboard. @@ -2833,7 +2826,7 @@ Clear history Clears all CDS history, meaning the next sync will consider all numbers to be new. Clear all service IDs - Clears all known service IDs (except your own). Do not use on your personal device! + Clears all known service IDs (except your own) for people that have phone numbers. Do not use on your personal device! Clear all profile keys Clears all known profile keys (except your own). Do not use on your personal device! Expired Badge