From e22560a794eab38b309b922eb5301afe2d3d0f14 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 25 Apr 2022 12:17:14 -0300 Subject: [PATCH] Add dialog to nav to story or profile photo. --- .../ConversationSettingsFragment.kt | 21 +++++++++----- .../securesms/stories/dialogs/StoryDialogs.kt | 28 ++++++++++++++++++ .../display_story_or_profile_image_dialog.xml | 29 +++++++++++++++++++ app/src/main/res/values/strings.xml | 4 +++ 4 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/layout/display_story_or_profile_image_dialog.xml diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt index d595381279..5f42ec3123 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt @@ -75,6 +75,8 @@ import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientExporter import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.ui.bottomsheet.RecipientBottomSheetDialogFragment +import org.thoughtcrime.securesms.stories.Stories +import org.thoughtcrime.securesms.stories.dialogs.StoryDialogs import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity import org.thoughtcrime.securesms.util.CommunicationActions import org.thoughtcrime.securesms.util.ContextUtil @@ -269,15 +271,18 @@ class ConversationSettingsFragment : DSLSettingsFragment( recipient = state.recipient, storyViewState = state.storyViewState, onAvatarClick = { avatar -> - if (avatar.hasStory()) { - startActivity(StoryViewerActivity.createIntent(requireContext(), state.recipient.id)) + val viewAvatarIntent = AvatarPreviewActivity.intentFromRecipientId(requireContext(), state.recipient.id) + val viewAvatarTransitionBundle = AvatarPreviewActivity.createTransitionBundle(requireActivity(), avatar) + + if (Stories.isFeatureEnabled() && avatar.hasStory()) { + val viewStoryIntent = StoryViewerActivity.createIntent(requireContext(), state.recipient.id) + StoryDialogs.displayStoryOrProfileImage( + context = requireContext(), + onViewStory = { startActivity(viewStoryIntent) }, + onViewAvatar = { startActivity(viewAvatarIntent, viewAvatarTransitionBundle) } + ) } else if (!state.recipient.isSelf) { - requireActivity().apply { - startActivity( - AvatarPreviewActivity.intentFromRecipientId(this, state.recipient.id), - AvatarPreviewActivity.createTransitionBundle(this, avatar) - ) - } + startActivity(viewAvatarIntent, viewAvatarTransitionBundle) } }, onBadgeClick = { badge -> 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 e434000ac3..934fabc46e 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 @@ -1,7 +1,11 @@ package org.thoughtcrime.securesms.stories.dialogs import android.content.Context +import android.view.View import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.shape.MaterialShapeDrawable +import com.google.android.material.shape.ShapeAppearanceModel +import org.signal.core.util.DimensionUnit import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.keyvalue.SignalStore @@ -51,4 +55,28 @@ object StoryDialogs { .setPositiveButton(R.string.StoryDialogs__send) { _, _ -> resend() } .show() } + + fun displayStoryOrProfileImage( + context: Context, + onViewStory: () -> Unit, + onViewAvatar: () -> Unit + ) { + MaterialAlertDialogBuilder(context) + .setView(R.layout.display_story_or_profile_image_dialog) + .setBackground(MaterialShapeDrawable(ShapeAppearanceModel.builder().setAllCornerSizes(DimensionUnit.DP.toPixels(28f)).build())) + .create() + .apply { + setOnShowListener { dialog -> + findViewById(R.id.view_story)!!.setOnClickListener { + dialog.dismiss() + onViewStory() + } + findViewById(R.id.view_profile_photo)!!.setOnClickListener { + dialog.dismiss() + onViewAvatar() + } + } + } + .show() + } } diff --git a/app/src/main/res/layout/display_story_or_profile_image_dialog.xml b/app/src/main/res/layout/display_story_or_profile_image_dialog.xml new file mode 100644 index 0000000000..b4217ddeb0 --- /dev/null +++ b/app/src/main/res/layout/display_story_or_profile_image_dialog.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1efa9d09fa..45364a1472 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4662,6 +4662,10 @@ Sent story Failed to send story + + View story + + View profile photo Turn off censorship circumvention?