Fix DozeBanner dismissal and button tint.

Resolves #14001
This commit is contained in:
Sagar
2025-02-20 23:31:12 +05:30
committed by Michelle Tang
parent a53bd29553
commit 6a773730b8
3 changed files with 15 additions and 5 deletions

View File

@@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.util.PowerManagerCompat
import org.thoughtcrime.securesms.util.ServiceUtil import org.thoughtcrime.securesms.util.ServiceUtil
import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.TextSecurePreferences
class DozeBanner(private val context: Context) : Banner<Unit>() { class DozeBanner(private val context: Context, private val onDismissListener: () -> Unit) : Banner<Unit>() {
override val enabled: Boolean override val enabled: Boolean
get() = Build.VERSION.SDK_INT >= 23 && !SignalStore.account.fcmEnabled && !TextSecurePreferences.hasPromptedOptimizeDoze(context) && !ServiceUtil.getPowerManager(context).isIgnoringBatteryOptimizations(context.packageName) get() = Build.VERSION.SDK_INT >= 23 && !SignalStore.account.fcmEnabled && !TextSecurePreferences.hasPromptedOptimizeDoze(context) && !ServiceUtil.getPowerManager(context).isIgnoringBatteryOptimizations(context.packageName)
@@ -42,6 +42,7 @@ class DozeBanner(private val context: Context) : Banner<Unit>() {
contentPadding = contentPadding, contentPadding = contentPadding,
onDismissListener = { onDismissListener = {
TextSecurePreferences.setPromptedOptimizeDoze(context, true) TextSecurePreferences.setPromptedOptimizeDoze(context, true)
onDismissListener.invoke()
}, },
onOkListener = { onOkListener = {
TextSecurePreferences.setPromptedOptimizeDoze(context, true) TextSecurePreferences.setPromptedOptimizeDoze(context, true)

View File

@@ -28,10 +28,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.pluralStringResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import org.signal.core.ui.Previews import org.signal.core.ui.Previews
import org.signal.core.ui.SignalPreview import org.signal.core.ui.SignalPreview
@@ -147,8 +148,12 @@ fun DefaultBanner(
modifier = Modifier.size(48.dp) modifier = Modifier.size(48.dp)
) { ) {
Icon( Icon(
painter = painterResource(id = R.drawable.symbol_x_24), imageVector = ImageVector.vectorResource(id = R.drawable.symbol_x_24),
contentDescription = stringResource(id = R.string.InviteActivity_cancel) contentDescription = stringResource(id = R.string.InviteActivity_cancel),
tint = when (importance) {
Importance.NORMAL -> MaterialTheme.colorScheme.onSurfaceVariant
Importance.ERROR -> colorResource(id = R.color.signal_light_colorOnSurface)
}
) )
} }
} }
@@ -200,6 +205,7 @@ private fun BubblesOptOutPreview() {
Action(R.string.BubbleOptOutTooltip__turn_off) {}, Action(R.string.BubbleOptOutTooltip__turn_off) {},
Action(R.string.BubbleOptOutTooltip__not_now) {} Action(R.string.BubbleOptOutTooltip__not_now) {}
), ),
onDismissListener = { },
paddingValues = PaddingValues(horizontal = 12.dp, vertical = 8.dp) paddingValues = PaddingValues(horizontal = 12.dp, vertical = 8.dp)
) )
} }

View File

@@ -903,7 +903,10 @@ public class ConversationListFragment extends MainFragment implements ActionMode
new UnauthorizedBanner(requireContext()), new UnauthorizedBanner(requireContext()),
new ServiceOutageBanner(requireContext()), new ServiceOutageBanner(requireContext()),
new OutdatedBuildBanner(), new OutdatedBuildBanner(),
new DozeBanner(requireContext()), new DozeBanner(requireContext(), () -> {
bannerManager.updateContent(bannerView.get());
return Unit.INSTANCE;
}),
new CdsTemporaryErrorBanner(getChildFragmentManager()), new CdsTemporaryErrorBanner(getChildFragmentManager()),
new CdsPermanentErrorBanner(getChildFragmentManager()), new CdsPermanentErrorBanner(getChildFragmentManager()),
new UsernameOutOfSyncBanner((usernameSyncState) -> { new UsernameOutOfSyncBanner((usernameSyncState) -> {