diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/SafetyNumberChangeDialogPreviewer.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/SafetyNumberChangeDialogPreviewer.kt index 78d4968fbe..7bcbbbfe33 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/SafetyNumberChangeDialogPreviewer.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/SafetyNumberChangeDialogPreviewer.kt @@ -5,7 +5,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import org.signal.core.util.ThreadUtil import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.database.IdentityDatabase import org.thoughtcrime.securesms.database.SignalDatabase @@ -21,7 +20,7 @@ import org.thoughtcrime.securesms.testing.SignalActivityRule @RunWith(AndroidJUnit4::class) class SafetyNumberChangeDialogPreviewer { - @get:Rule val harness = SignalActivityRule(othersCount = 5) + @get:Rule val harness = SignalActivityRule(othersCount = 10) @Test fun testShowLongName() { @@ -62,6 +61,6 @@ class SafetyNumberChangeDialogPreviewer { } // Uncomment to make dialog stay on screen, otherwise will show/dismiss immediately - ThreadUtil.sleep(15000) + // ThreadUtil.sleep(15000) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetFragment.kt index d5a433699f..95014cad4d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetFragment.kt @@ -127,7 +127,7 @@ class SafetyNumberBottomSheetFragment : DSLSettingsBottomSheetFragment(layoutId textPref( title = DSLSettingsText.from( when { - state.isCheckupComplete() && state.hasLargeNumberOfUntrustedRecipients -> "" + state.isCheckupComplete() && state.hasLargeNumberOfUntrustedRecipients -> getString(R.string.SafetyNumberBottomSheetFragment__all_connections_have_been_reviewed) state.hasLargeNumberOfUntrustedRecipients -> getString(R.string.SafetyNumberBottomSheetFragment__you_have_d_connections, args.untrustedRecipients.size) else -> getString(R.string.SafetyNumberBottomSheetFragment__the_following_people) }, @@ -137,7 +137,7 @@ class SafetyNumberBottomSheetFragment : DSLSettingsBottomSheetFragment(layoutId ) if (state.isEmpty()) { - space(DimensionUnit.DP.toPixels(96f).toInt()) + space(DimensionUnit.DP.toPixels(48f).toInt()) noPadTextPref( title = DSLSettingsText.from( @@ -147,6 +147,8 @@ class SafetyNumberBottomSheetFragment : DSLSettingsBottomSheetFragment(layoutId DSLSettingsText.ColorModifier(ContextCompat.getColor(requireContext(), R.color.signal_colorOnSurfaceVariant)) ) ) + + space(DimensionUnit.DP.toPixels(48f).toInt()) } if (!state.hasLargeNumberOfUntrustedRecipients) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetViewModel.kt index 13757ae349..5cbd6847fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/safety/SafetyNumberBottomSheetViewModel.kt @@ -38,14 +38,16 @@ class SafetyNumberBottomSheetViewModel( val state: Flowable = store.stateFlowable.observeOn(AndroidSchedulers.mainThread()) - val hasLargeNumberOfUntrustedRecipients - get() = store.state.hasLargeNumberOfUntrustedRecipients - private val disposables = CompositeDisposable() init { - if (!store.state.hasLargeNumberOfUntrustedRecipients) { - loadRecipients() + val bucketFlowable: Flowable>> = destinationStore.stateFlowable.switchMap { repository.getBuckets(args.untrustedRecipients, it) } + disposables += store.update(bucketFlowable) { map, state -> + state.copy( + destinationToRecipientMap = map, + untrustedRecipientCount = map.size, + loadState = if (state.loadState == SafetyNumberBottomSheetState.LoadState.INIT) SafetyNumberBottomSheetState.LoadState.READY else state.loadState + ) } } @@ -62,17 +64,6 @@ class SafetyNumberBottomSheetViewModel( } } - private fun loadRecipients() { - val bucketFlowable: Flowable>> = destinationStore.stateFlowable.switchMap { repository.getBuckets(args.untrustedRecipients, it) } - - disposables += store.update(bucketFlowable) { map, state -> - state.copy( - destinationToRecipientMap = map, - untrustedRecipientCount = map.size - ) - } - } - override fun onCleared() { disposables.clear() } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91a62f4cc4..b95e6fbd86 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4948,6 +4948,8 @@ Safety number checkup Safety number checkup complete + + All connections have been reviewed, tap send to continue. You have %1$d connections who may have reinstalled Signal or changed devices. Before sharing your story with them review their safety numbers or consider removing them from your story.