Add dialog to nav to story or profile photo.

This commit is contained in:
Alex Hart
2022-04-25 12:17:14 -03:00
committed by Cody Henthorne
parent c081193373
commit e22560a794
4 changed files with 74 additions and 8 deletions

View File

@@ -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 ->

View File

@@ -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<View>(R.id.view_story)!!.setOnClickListener {
dialog.dismiss()
onViewStory()
}
findViewById<View>(R.id.view_profile_photo)!!.setOnClickListener {
dialog.dismiss()
onViewAvatar()
}
}
}
.show()
}
}