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()
}
}

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<TextView
android:id="@+id/view_story"
android:layout_width="match_parent"
android:layout_height="48sp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/dsl_settings_gutter"
android:text="@string/StoryDialogs__view_story"
android:textAppearance="@style/Signal.Text.Body" />
<TextView
android:id="@+id/view_profile_photo"
android:layout_width="match_parent"
android:layout_height="48sp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/dsl_settings_gutter"
android:text="@string/StoryDialogs__view_profile_photo"
android:textAppearance="@style/Signal.Text.Body" />
</LinearLayout>

View file

@ -4662,6 +4662,10 @@
<string name="TextStoryPostCreationFragment__sent_story">Sent story</string>
<!-- Toasted when the user external share to a text story fails -->
<string name="TextStoryPostCreationFragment__failed_to_send_story">Failed to send story</string>
<!-- Displayed in a dialog to let the user select a given users story -->
<string name="StoryDialogs__view_story">View story</string>
<!-- Displayed in a dialog to let the user select a given users profile photo -->
<string name="StoryDialogs__view_profile_photo">View profile photo</string>
<!-- Title for a notification at the bottom of the chat list suggesting that the user disable censorship circumvention because the service has become reachable -->
<string name="TurnOffCircumventionMegaphone_turn_off_censorship_circumvention">Turn off censorship circumvention?</string>