diff --git a/app/src/main/java/org/thoughtcrime/securesms/verify/PnpSafetyNumberEducationDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/verify/PnpSafetyNumberEducationDialogFragment.kt
index 0b91f52550..b25609f0d6 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/verify/PnpSafetyNumberEducationDialogFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/verify/PnpSafetyNumberEducationDialogFragment.kt
@@ -6,12 +6,15 @@
package org.thoughtcrime.securesms.verify
import android.animation.Animator
+import android.app.Dialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import com.airbnb.lottie.LottieDrawable
+import com.google.android.material.bottomsheet.BottomSheetBehavior
+import com.google.android.material.bottomsheet.BottomSheetDialog
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.animation.AnimationCompleteListener
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
@@ -23,14 +26,21 @@ import org.thoughtcrime.securesms.util.CommunicationActions
import org.thoughtcrime.securesms.util.visible
class PnpSafetyNumberEducationDialogFragment : FixedRoundedCornerBottomSheetDialogFragment() {
- override val peekHeightPercentage: Float = 0.66f
-
private val binding by ViewBinderDelegate(SafetyNumberPnpEducationBottomSheetBinding::bind)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.safety_number_pnp_education_bottom_sheet, container, false)
}
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
+ dialog.behavior.skipCollapsed = true
+ dialog.setOnShowListener {
+ dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED
+ }
+ return dialog
+ }
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
diff --git a/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyDisplayFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyDisplayFragment.kt
index f50470ae6b..83459a955e 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyDisplayFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyDisplayFragment.kt
@@ -42,6 +42,7 @@ import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.visible
import java.nio.charset.StandardCharsets
import java.util.Locale
+import kotlin.math.max
/**
* Fragment to display a user's identity key.
@@ -100,8 +101,11 @@ class VerifyDisplayFragment : Fragment(), OnScrollChangedListener {
}
})
val peekSize = resources.getDimensionPixelSize(R.dimen.safety_number_qr_peek)
- val pageWidth = resources.getDimensionPixelSize(R.dimen.safety_number_qr_width)
- val pageTransformer = ViewPager2.PageTransformer { page: View, position: Float -> page.translationX = -position * (peekSize + (page.width - pageWidth) / 2f) }
+ val pageTransformer = ViewPager2.PageTransformer { page: View, position: Float ->
+ val remainingWidth = (max(0, page.width - ((page as ViewGroup).getChildAt(0).width))) / 2f
+ val peekWidth = peekSize.toFloat().coerceAtMost(remainingWidth / 2f)
+ page.translationX = -position * (peekWidth + remainingWidth)
+ }
binding.verifyViewPager.setPageTransformer(pageTransformer)
binding.verifyViewPager.offscreenPageLimit = 1
TabLayoutMediator(binding.dotIndicators, binding.verifyViewPager) { _: TabLayout.Tab?, _: Int -> }.attach()
diff --git a/app/src/main/res/layout/safety_number_pnp_education_bottom_sheet.xml b/app/src/main/res/layout/safety_number_pnp_education_bottom_sheet.xml
index 0690c8cf46..319f54ee6f 100644
--- a/app/src/main/res/layout/safety_number_pnp_education_bottom_sheet.xml
+++ b/app/src/main/res/layout/safety_number_pnp_education_bottom_sheet.xml
@@ -15,46 +15,61 @@
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
android:background="@color/signal_icon_tint_tab_unselected"/>
-
-
-
+ android:layout_height="0dp"
+ android:layout_weight="1">
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 1ce1e78625..c0da017c56 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -222,5 +222,4 @@
32dp
24dp
- 288dp