Add stories beta dialog.

fork-5.53.8
Alex Hart 2022-10-05 16:11:51 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 4b94509a7a
commit 2edb9eeb52
4 zmienionych plików z 32 dodań i 1 usunięć

Wyświetl plik

@ -12,6 +12,7 @@ import io.reactivex.rxjava3.core.Observable
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.groups.SelectionLimits import org.thoughtcrime.securesms.groups.SelectionLimits
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.stories.dialogs.StoryDialogs
import org.thoughtcrime.securesms.stories.settings.custom.PrivateStorySettingsFragment import org.thoughtcrime.securesms.stories.settings.custom.PrivateStorySettingsFragment
import org.thoughtcrime.securesms.stories.settings.my.MyStorySettingsFragment import org.thoughtcrime.securesms.stories.settings.my.MyStorySettingsFragment
import org.thoughtcrime.securesms.stories.settings.privacy.ChooseInitialMyStoryMembershipBottomSheetDialogFragment import org.thoughtcrime.securesms.stories.settings.privacy.ChooseInitialMyStoryMembershipBottomSheetDialogFragment
@ -97,6 +98,17 @@ class ContactSearchMediator(
} }
private fun toggleStorySelection(view: View, contactSearchData: ContactSearchData.Story, isSelected: Boolean) { private fun toggleStorySelection(view: View, contactSearchData: ContactSearchData.Story, isSelected: Boolean) {
if (SignalStore.storyValues().userHasSeenBetaDialog) {
performStoryToggle(view, contactSearchData, isSelected)
} else {
StoryDialogs.displayBetaDialog(view.context) {
SignalStore.storyValues().userHasSeenBetaDialog = true
performStoryToggle(view, contactSearchData, isSelected)
}
}
}
private fun performStoryToggle(view: View, contactSearchData: ContactSearchData.Story, isSelected: Boolean) {
if (contactSearchData.recipient.isMyStory && !SignalStore.storyValues().userHasBeenNotifiedAboutStories) { if (contactSearchData.recipient.isMyStory && !SignalStore.storyValues().userHasBeenNotifiedAboutStories) {
ChooseInitialMyStoryMembershipBottomSheetDialogFragment.show(fragment.childFragmentManager) ChooseInitialMyStoryMembershipBottomSheetDialogFragment.show(fragment.childFragmentManager)
} else { } else {

Wyświetl plik

@ -39,6 +39,11 @@ internal class StoryValues(store: KeyValueStore) : SignalStoreValues(store) {
* Marks whether the user has seen the onboarding story * Marks whether the user has seen the onboarding story
*/ */
private const val USER_HAS_SEEN_ONBOARDING_STORY = "stories.user.has.seen.onboarding" private const val USER_HAS_SEEN_ONBOARDING_STORY = "stories.user.has.seen.onboarding"
/**
* Marks whether the user has seen the beta dialog
*/
private const val USER_HAS_SEEN_BETA_DIALOG = "stories.user.has.seen.beta.dialog"
} }
override fun onFirstEverAppLaunch() = Unit override fun onFirstEverAppLaunch() = Unit
@ -47,7 +52,8 @@ internal class StoryValues(store: KeyValueStore) : SignalStoreValues(store) {
MANUAL_FEATURE_DISABLE, MANUAL_FEATURE_DISABLE,
USER_HAS_ADDED_TO_A_STORY, USER_HAS_ADDED_TO_A_STORY,
USER_HAS_SEEN_FIRST_NAV_VIEW, USER_HAS_SEEN_FIRST_NAV_VIEW,
HAS_DOWNLOADED_ONBOARDING_STORY HAS_DOWNLOADED_ONBOARDING_STORY,
USER_HAS_SEEN_BETA_DIALOG
) )
var isFeatureDisabled: Boolean by booleanValue(MANUAL_FEATURE_DISABLE, false) var isFeatureDisabled: Boolean by booleanValue(MANUAL_FEATURE_DISABLE, false)
@ -62,6 +68,8 @@ internal class StoryValues(store: KeyValueStore) : SignalStoreValues(store) {
var userHasSeenOnboardingStory: Boolean by booleanValue(USER_HAS_SEEN_ONBOARDING_STORY, false) var userHasSeenOnboardingStory: Boolean by booleanValue(USER_HAS_SEEN_ONBOARDING_STORY, false)
var userHasSeenBetaDialog: Boolean by booleanValue(USER_HAS_SEEN_BETA_DIALOG, false)
fun setLatestStorySend(storySend: StorySend) { fun setLatestStorySend(storySend: StorySend) {
synchronized(this) { synchronized(this) {
val storySends: List<StorySend> = getList(LATEST_STORY_SENDS, StorySendSerializer) val storySends: List<StorySend> = getList(LATEST_STORY_SENDS, StorySendSerializer)

Wyświetl plik

@ -38,6 +38,13 @@ object StoryDialogs {
.setTitle(R.string.StoriesPrivacySettingsFragment__turn_off_stories_question) .setTitle(R.string.StoriesPrivacySettingsFragment__turn_off_stories_question)
.setMessage(R.string.StoriesPrivacySettingsFragment__you_will_no_longer_be_able_to_share) .setMessage(R.string.StoriesPrivacySettingsFragment__you_will_no_longer_be_able_to_share)
.setPositiveButton(positiveButtonMessage) { _, _ -> onDisable() } .setPositiveButton(positiveButtonMessage) { _, _ -> onDisable() }
}
fun displayBetaDialog(context: Context, onConfirmed: () -> Unit) {
MaterialAlertDialogBuilder(context)
.setTitle(R.string.StoryDialogs__stories_is_available_to)
.setMessage(R.string.StoryDialogs__if_you_share_a_story)
.setPositiveButton(R.string.Permissions_continue) { _, _ -> onConfirmed() }
.setNegativeButton(android.R.string.cancel) { _, _ -> } .setNegativeButton(android.R.string.cancel) { _, _ -> }
.show() .show()
} }

Wyświetl plik

@ -4945,6 +4945,10 @@
<string name="StoryDialogs__s_and_updates_shared">\"%1$s\" and updates shared to this story will be deleted.</string> <string name="StoryDialogs__s_and_updates_shared">\"%1$s\" and updates shared to this story will be deleted.</string>
<!-- Dialog positive action for deleting a private story --> <!-- Dialog positive action for deleting a private story -->
<string name="StoryDialogs__delete">Delete</string> <string name="StoryDialogs__delete">Delete</string>
<!-- Dialog title for first time sending something to a beta story -->
<string name="StoryDialogs__stories_is_available_to">Stories is available to Signal beta users only.</string>
<!-- Dialog message for first time sending something to a beta story -->
<string name="StoryDialogs__if_you_share_a_story">If you share a story, it will only be available to people who are on Signal beta.</string>
<!-- Dialog title for first time adding something to a story --> <!-- Dialog title for first time adding something to a story -->
<string name="StoryDialogs__add_to_story_q">Add to story?</string> <string name="StoryDialogs__add_to_story_q">Add to story?</string>
<!-- Dialog message for first time adding something to a story --> <!-- Dialog message for first time adding something to a story -->