From 35f1baf965fd73d1626028f7b1c9094c8e1f180b Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 6 Oct 2022 10:34:39 -0300 Subject: [PATCH] Add group story removal dialog. --- .../app/internal/StoryDialogLauncherFragment.kt | 9 +++++++++ .../securesms/stories/dialogs/StoryContextMenu.kt | 2 +- .../securesms/stories/dialogs/StoryDialogs.kt | 13 +++++++++++++ .../settings/group/GroupStorySettingsFragment.kt | 8 +++++++- app/src/main/res/values/strings.xml | 7 +++++++ .../stories/dialogs/StoryContextMenuTest.kt | 2 +- 6 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/StoryDialogLauncherFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/StoryDialogLauncherFragment.kt index bc5dff2097..bd90db9c98 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/StoryDialogLauncherFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/StoryDialogLauncherFragment.kt @@ -16,6 +16,15 @@ class StoryDialogLauncherFragment : DSLSettingsFragment(titleId = R.string.prefe private fun getConfiguration(): DSLConfiguration { return configure { + clickPref( + title = DSLSettingsText.from(R.string.preferences__internal_remove_group_story), + onClick = { + StoryDialogs.removeGroupStory(requireContext(), "Family") { + Toast.makeText(requireContext(), R.string.preferences__internal_remove_group_story, Toast.LENGTH_SHORT).show() + } + } + ) + clickPref( title = DSLSettingsText.from(R.string.preferences__internal_retry_send), onClick = { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenu.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenu.kt index 0dadf9eca3..87f3850048 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenu.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenu.kt @@ -66,7 +66,7 @@ object StoryContextMenu { val intent = if (messageRecord.storyType.isTextStory) { val textStoryBody = StoryTextPost.parseFrom(Base64.decode(messageRecord.body)).body val linkUrl = messageRecord.linkPreviews.firstOrNull()?.url ?: "" - val shareText = "${textStoryBody} $linkUrl".trim() + val shareText = "$textStoryBody $linkUrl".trim() ShareCompat.IntentBuilder(fragment.requireContext()) .setText(shareText) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryDialogs.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryDialogs.kt index 6bccdad5e5..1844aa3b94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryDialogs.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/dialogs/StoryDialogs.kt @@ -10,6 +10,19 @@ import org.thoughtcrime.securesms.R object StoryDialogs { + fun removeGroupStory( + context: Context, + groupName: String, + onConfirmed: () -> Unit + ) { + MaterialAlertDialogBuilder(context) + .setTitle(R.string.StoryDialogs__remove_group_story) + .setMessage(context.getString(R.string.StoryDialogs__s_will_be_removed, groupName)) + .setPositiveButton(R.string.StoryDialogs__remove) { _, _ -> onConfirmed() } + .setNegativeButton(android.R.string.cancel) { _, _ -> } + .show() + } + fun deleteDistributionList( context: Context, distributionListName: String, diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsFragment.kt index f480d213ae..7b11dd9ab5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsFragment.kt @@ -15,6 +15,7 @@ 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.conversation.ConversationIntents +import org.thoughtcrime.securesms.stories.dialogs.StoryDialogs import org.thoughtcrime.securesms.stories.settings.custom.PrivateStoryItem import org.thoughtcrime.securesms.util.LifecycleDisposable import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter @@ -94,7 +95,12 @@ class GroupStorySettingsFragment : DSLSettingsFragment(menuId = R.menu.story_gro DSLSettingsText.ColorModifier(ContextCompat.getColor(requireContext(), R.color.signal_colorError)) ), onClick = { - viewModel.doNotDisplayAsStory() + StoryDialogs.removeGroupStory( + requireContext(), + state.name + ) { + viewModel.doNotDisplayAsStory() + } } ) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 99d4afa145..1c49ca9e85 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2761,6 +2761,7 @@ Story or profile selector Stories dialog launcher Retry send + Remove group story Clear onboarding state Clears onboarding flag and triggers download of onboarding stories. Internal Preferences @@ -4940,6 +4941,12 @@ Only share with… Done + + Remove group story? + + \"%1$s\" will be removed. + + Remove Delete private story? diff --git a/app/src/test/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenuTest.kt b/app/src/test/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenuTest.kt index f2acfad664..627f7bdefe 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenuTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/stories/dialogs/StoryContextMenuTest.kt @@ -127,4 +127,4 @@ class StoryContextMenuTest { val targetIntent: Intent = chooserIntent.getParcelableExtra(Intent.EXTRA_INTENT)!! assertEquals(expected, targetIntent.getStringExtra(Intent.EXTRA_TEXT)) } -} \ No newline at end of file +}