Fix play console crash reports.

This commit is contained in:
Sagar
2025-03-31 20:40:49 +05:30
committed by Greyson Parrelli
parent 63c00e638d
commit 02ee1c794b
7 changed files with 166 additions and 152 deletions
@@ -8,7 +8,6 @@ package org.thoughtcrime.securesms.banner
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.platform.ComposeView
@@ -37,18 +36,16 @@ class BannerManager @JvmOverloads constructor(
* Re-evaluates the [Banner]s, choosing one to render (if any) and updating the view.
*/
fun updateContent(composeView: ComposeView) {
val banner: Banner<Any>? = banners.firstOrNull { it.enabled } as Banner<Any>?
composeView.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
val banner: Banner<Any>? = banners.firstOrNull { it.enabled } as Banner<Any>?
if (banner == null) {
onNoBannerShownListener()
return@setContent
}
val state: State<Any?> = banner.dataFlow.collectAsStateWithLifecycle(initialValue = null)
val bannerState by state
val bannerState by banner.dataFlow.collectAsStateWithLifecycle(initialValue = null)
bannerState?.let { model ->
SignalTheme {
@@ -5,6 +5,8 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@@ -38,7 +40,7 @@ class ConnectivityWarningBottomSheet : ComposeBottomSheetDialogFragment() {
@JvmStatic
fun show(fragmentManager: FragmentManager) {
if (fragmentManager.findFragmentByTag(BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) == null) {
ConnectivityWarningBottomSheet().show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
BottomSheetUtil.show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG, ConnectivityWarningBottomSheet())
SignalStore.misc.lastConnectivityWarningTime = System.currentTimeMillis()
}
}
@@ -56,7 +58,10 @@ class ConnectivityWarningBottomSheet : ComposeBottomSheetDialogFragment() {
private fun Sheet(onDismiss: () -> Unit = {}) {
return Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxWidth().wrapContentSize(Alignment.Center)
modifier = Modifier
.verticalScroll(rememberScrollState())
.fillMaxWidth()
.wrapContentSize(Alignment.Center)
) {
BottomSheets.Handle()
Icon(
@@ -18,6 +18,7 @@ import androidx.lifecycle.Lifecycle
import org.signal.core.util.concurrent.LifecycleDisposable
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.DebugLogsPromptDialogFragment.Purpose.entries
import org.thoughtcrime.securesms.databinding.PromptLogsBottomSheetBinding
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
@@ -42,12 +43,12 @@ class DebugLogsPromptDialogFragment : FixedRoundedCornerBottomSheetDialogFragmen
}
if (NetworkUtil.isConnected(activity) && activity.supportFragmentManager.findFragmentByTag(BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) == null) {
DebugLogsPromptDialogFragment().apply {
val dialog = DebugLogsPromptDialogFragment().apply {
arguments = bundleOf(
KEY_PURPOSE to purpose.serialized
)
}.show(activity.supportFragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
}
BottomSheetUtil.show(activity.supportFragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG, dialog)
Log.i(TAG, "Showing debug log dialog prompt for $purpose")
when (purpose) {
Purpose.NOTIFICATIONS -> SignalStore.uiHints.lastNotificationLogsPrompt = System.currentTimeMillis()
@@ -5,6 +5,8 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@@ -67,7 +69,10 @@ class DeviceSpecificNotificationBottomSheet : ComposeBottomSheetDialogFragment()
private fun DeviceSpecificSheet(onContinue: () -> Unit = {}, onDismiss: () -> Unit = {}) {
return Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxWidth().wrapContentSize(Alignment.Center)
modifier = Modifier
.verticalScroll(rememberScrollState())
.fillMaxWidth()
.wrapContentSize(Alignment.Center)
) {
BottomSheets.Handle()
Icon(
@@ -95,13 +100,17 @@ private fun DeviceSpecificSheet(onContinue: () -> Unit = {}, onDismiss: () -> Un
) {
Buttons.MediumTonal(
onClick = onDismiss,
modifier = Modifier.padding(end = 12.dp).weight(1f)
modifier = Modifier
.padding(end = 12.dp)
.weight(1f)
) {
Text(stringResource(id = R.string.DeviceSpecificNotificationBottomSheet__no_thanks))
}
Buttons.MediumTonal(
onClick = onContinue,
modifier = Modifier.padding(start = 12.dp).weight(1f)
modifier = Modifier
.padding(start = 12.dp)
.weight(1f)
) {
Icon(painterResource(id = R.drawable.ic_open_20), contentDescription = null, modifier = Modifier.padding(end = 4.dp))
Text(stringResource(id = R.string.DeviceSpecificNotificationBottomSheet__continue))
@@ -33,11 +33,12 @@ class PromptBatterySaverDialogFragment : FixedRoundedCornerBottomSheetDialogFrag
@JvmStatic
fun show(fragmentManager: FragmentManager) {
if (fragmentManager.findFragmentByTag(BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) == null) {
PromptBatterySaverDialogFragment().apply {
val dialog = PromptBatterySaverDialogFragment().apply {
arguments = bundleOf(
ARG_LEARN_MORE_LINK to DeviceSpecificNotificationConfig.currentConfig.link
)
}.show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
}
BottomSheetUtil.show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG, dialog)
SignalStore.uiHints.lastBatterySaverPrompt = System.currentTimeMillis()
}
}
@@ -2,86 +2,86 @@
~ Copyright 2023 Signal Messenger, LLC
~ SPDX-License-Identifier: AGPL-3.0-only
-->
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="48dp"
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:background="@color/signal_icon_tint_tab_unselected"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_troubleshoot_notification"
android:layout_marginTop="32dp"
android:layout_gravity="center_horizontal"/>
<TextView
style="@style/Signal.Text.TitleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="16dp"
android:layout_marginHorizontal="24dp"
android:text="@string/PromptBatterySaverBottomSheet__title"
/>
<org.thoughtcrime.securesms.util.views.LearnMoreTextView
android:id="@+id/message"
style="@style/Signal.Text.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="8dp"
android:layout_marginHorizontal="24dp"
android:text="@string/PromptBatterySaverBottomSheet__message"
/>
android:layout_height="wrap_content">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:minWidth="340dp"
android:gravity="center_horizontal"
android:layout_marginHorizontal="24dp">
android:orientation="vertical">
<com.google.android.material.button.MaterialButton
android:id="@+id/dismiss_button"
style="@style/Signal.Widget.Button.Medium.Tonal"
<View
android:layout_width="48dp"
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:background="@color/signal_icon_tint_tab_unselected" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32dp"
android:layout_marginBottom="32dp"
android:minWidth="170dp"
android:layout_weight="1"
android:layout_marginEnd="12dp"
android:text="@string/PromptBatterySaverBottomSheet__no_thanks"/>
android:src="@drawable/ic_troubleshoot_notification" />
<com.google.android.material.button.MaterialButton
android:id="@+id/continue_button"
style="@style/Signal.Widget.Button.Medium.Tonal"
<TextView
style="@style/Signal.Text.TitleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="32dp"
android:layout_marginBottom="32dp"
android:minWidth="170dp"
android:layout_weight="1"
android:layout_marginStart="12dp"
android:text="@string/PromptBatterySaverBottomSheet__continue"/>
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="@string/PromptBatterySaverBottomSheet__title" />
<org.thoughtcrime.securesms.util.views.LearnMoreTextView
android:id="@+id/message"
style="@style/Signal.Text.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/PromptBatterySaverBottomSheet__message" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:gravity="center_horizontal"
android:minWidth="340dp"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/dismiss_button"
style="@style/Signal.Widget.Button.Medium.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="32dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="32dp"
android:layout_weight="1"
android:minWidth="170dp"
android:text="@string/PromptBatterySaverBottomSheet__no_thanks" />
<com.google.android.material.button.MaterialButton
android:id="@+id/continue_button"
style="@style/Signal.Widget.Button.Medium.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="12dp"
android:layout_marginTop="32dp"
android:layout_marginBottom="32dp"
android:layout_weight="1"
android:minWidth="170dp"
android:text="@string/PromptBatterySaverBottomSheet__continue" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
@@ -2,87 +2,88 @@
~ Copyright 2023 Signal Messenger, LLC
~ SPDX-License-Identifier: AGPL-3.0-only
-->
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="48dp"
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:background="@color/signal_icon_tint_tab_unselected"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_debug_log"
android:layout_marginTop="32dp"
android:layout_gravity="center_horizontal"/>
<TextView
android:id="@+id/title"
style="@style/Signal.Text.TitleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="16dp"
android:text="@string/PromptLogsSlowNotificationsDialog__title"
/>
<TextView
style="@style/Signal.Text.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="12dp"
android:layout_marginHorizontal="24dp"
android:text="@string/PromptLogsSlowNotificationsDialog__message"
/>
android:layout_height="wrap_content">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:minWidth="320dp"
android:gravity="center_horizontal"
android:layout_marginHorizontal="34dp">
android:orientation="vertical">
<com.google.android.material.button.MaterialButton
android:id="@+id/decline"
style="@style/Signal.Widget.Button.Medium.Tonal"
<View
android:layout_width="48dp"
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:background="@color/signal_icon_tint_tab_unselected" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32dp"
android:layout_marginBottom="32dp"
android:minWidth="160dp"
android:layout_weight="1"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:text="@string/DebugLogsPromptDialogFragment__no_thanks"/>
android:src="@drawable/ic_debug_log" />
<com.google.android.material.button.MaterialButton
android:id="@+id/submit"
style="@style/Signal.Widget.Button.Medium.Tonal"
<TextView
android:id="@+id/title"
style="@style/Signal.Text.TitleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="32dp"
android:layout_marginBottom="32dp"
android:minWidth="160dp"
android:layout_weight="1"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:text="@string/DebugLogsPromptDialogFragment__submit"/>
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="@string/PromptLogsSlowNotificationsDialog__title" />
<TextView
style="@style/Signal.Text.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="12dp"
android:gravity="center"
android:text="@string/PromptLogsSlowNotificationsDialog__message" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="34dp"
android:gravity="center_horizontal"
android:minWidth="320dp"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/decline"
style="@style/Signal.Widget.Button.Medium.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="6dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="32dp"
android:layout_weight="1"
android:minWidth="160dp"
android:text="@string/DebugLogsPromptDialogFragment__no_thanks" />
<com.google.android.material.button.MaterialButton
android:id="@+id/submit"
style="@style/Signal.Widget.Button.Medium.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="6dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="32dp"
android:layout_weight="1"
android:minWidth="160dp"
android:text="@string/DebugLogsPromptDialogFragment__submit" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>