From 02ee1c794b70b769e5f6f8d33e3e0254992ead49 Mon Sep 17 00:00:00 2001 From: Sagar <85388413+Sagar0-0@users.noreply.github.com> Date: Mon, 31 Mar 2025 20:40:49 +0530 Subject: [PATCH] Fix play console crash reports. --- .../securesms/banner/BannerManager.kt | 7 +- .../ConnectivityWarningBottomSheet.kt | 9 +- .../DebugLogsPromptDialogFragment.kt | 7 +- .../DeviceSpecificNotificationBottomSheet.kt | 15 +- .../PromptBatterySaverDialogFragment.kt | 5 +- .../prompt_battery_saver_bottom_sheet.xml | 136 ++++++++--------- .../res/layout/prompt_logs_bottom_sheet.xml | 139 +++++++++--------- 7 files changed, 166 insertions(+), 152 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt b/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt index a5b2b9f5f0..d1dcca838e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/banner/BannerManager.kt @@ -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? = banners.firstOrNull { it.enabled } as Banner? - composeView.apply { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { + val banner: Banner? = banners.firstOrNull { it.enabled } as Banner? if (banner == null) { onNoBannerShownListener() return@setContent } - val state: State = banner.dataFlow.collectAsStateWithLifecycle(initialValue = null) - val bannerState by state + val bannerState by banner.dataFlow.collectAsStateWithLifecycle(initialValue = null) bannerState?.let { model -> SignalTheme { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ConnectivityWarningBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/components/ConnectivityWarningBottomSheet.kt index 72e41b55fd..12ef0aa067 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ConnectivityWarningBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ConnectivityWarningBottomSheet.kt @@ -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( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt index 29c16beaa2..c896e6f4e1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt @@ -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() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/DeviceSpecificNotificationBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/components/DeviceSpecificNotificationBottomSheet.kt index 549f6b6e4f..f96b80ad58 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/DeviceSpecificNotificationBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/DeviceSpecificNotificationBottomSheet.kt @@ -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)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt index 639c91b805..6ee4197c41 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt @@ -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() } } diff --git a/app/src/main/res/layout/prompt_battery_saver_bottom_sheet.xml b/app/src/main/res/layout/prompt_battery_saver_bottom_sheet.xml index ba52f42d05..c6209798a5 100644 --- a/app/src/main/res/layout/prompt_battery_saver_bottom_sheet.xml +++ b/app/src/main/res/layout/prompt_battery_saver_bottom_sheet.xml @@ -2,86 +2,86 @@ ~ Copyright 2023 Signal Messenger, LLC ~ SPDX-License-Identifier: AGPL-3.0-only --> - - - - - - - - - - + android:layout_height="wrap_content"> + android:orientation="vertical"> - + + + android:src="@drawable/ic_troubleshoot_notification" /> - + android:layout_gravity="center_horizontal" + android:layout_marginHorizontal="24dp" + android:layout_marginTop="16dp" + android:gravity="center" + android:text="@string/PromptBatterySaverBottomSheet__title" /> + + + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/prompt_logs_bottom_sheet.xml b/app/src/main/res/layout/prompt_logs_bottom_sheet.xml index 94c9267e51..b674f229d8 100644 --- a/app/src/main/res/layout/prompt_logs_bottom_sheet.xml +++ b/app/src/main/res/layout/prompt_logs_bottom_sheet.xml @@ -2,87 +2,88 @@ ~ Copyright 2023 Signal Messenger, LLC ~ SPDX-License-Identifier: AGPL-3.0-only --> - - - - - - - - - - + android:layout_height="wrap_content"> + android:orientation="vertical"> - + + + android:src="@drawable/ic_debug_log" /> - + android:layout_gravity="center_horizontal" + android:layout_marginHorizontal="24dp" + android:layout_marginTop="16dp" + android:gravity="center" + android:text="@string/PromptLogsSlowNotificationsDialog__title" /> + + + + + + + + + + - \ No newline at end of file + \ No newline at end of file