From 5640e9c9b8cd7a58165bb7c3d369390bc6746eb0 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 29 Oct 2025 10:20:38 -0400 Subject: [PATCH] Show deprecation notice for API 21. --- .../banner/banners/DeprecatedSdkBanner.kt | 49 +++++++++++++++++++ .../ConversationListFragment.java | 2 + app/src/main/res/values/strings.xml | 3 ++ 3 files changed, 54 insertions(+) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/banner/banners/DeprecatedSdkBanner.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DeprecatedSdkBanner.kt b/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DeprecatedSdkBanner.kt new file mode 100644 index 0000000000..28bdbbbfd5 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DeprecatedSdkBanner.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2024 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.banner.banners + +import android.os.Build +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.signal.core.ui.compose.DayNightPreviews +import org.signal.core.ui.compose.Previews +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.banner.Banner +import org.thoughtcrime.securesms.banner.ui.compose.DefaultBanner +import org.thoughtcrime.securesms.banner.ui.compose.Importance + +class DeprecatedSdkBanner() : Banner() { + + override val enabled: Boolean + get() = Build.VERSION.SDK_INT < 23 + + override val dataFlow: Flow = flowOf(Unit) + + @Composable + override fun DisplayBanner(model: Unit, contentPadding: PaddingValues) = Banner(contentPadding) +} + +@Composable +private fun Banner(contentPadding: PaddingValues) { + DefaultBanner( + title = null, + body = stringResource(id = R.string.DeprecatedSdkBanner_body), + importance = Importance.ERROR, + paddingValues = contentPadding + ) +} + +@DayNightPreviews +@Composable +private fun BannerPreview() { + Previews.Preview { + Banner(contentPadding = PaddingValues(0.dp)) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index f643952a1b..b4e3e834ce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -89,6 +89,7 @@ import org.thoughtcrime.securesms.banner.BannerManager; import org.thoughtcrime.securesms.banner.banners.CdsPermanentErrorBanner; import org.thoughtcrime.securesms.banner.banners.CdsTemporaryErrorBanner; import org.thoughtcrime.securesms.banner.banners.DeprecatedBuildBanner; +import org.thoughtcrime.securesms.banner.banners.DeprecatedSdkBanner; import org.thoughtcrime.securesms.banner.banners.DozeBanner; import org.thoughtcrime.securesms.banner.banners.MediaRestoreProgressBanner; import org.thoughtcrime.securesms.banner.banners.OutdatedBuildBanner; @@ -712,6 +713,7 @@ public class ConversationListFragment extends MainFragment implements Conversati private void initializeBanners() { List> bannerRepositories = List.of( + new DeprecatedSdkBanner(), new DeprecatedBuildBanner(), new UnauthorizedBanner(requireContext()), new ServiceOutageBanner(requireContext()), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 389c9f9798..abd7061dd6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1170,6 +1170,9 @@ This version of Signal has expired. Update now to send and receive messages. Update now + + Signal no longer works on this device. To use Signal again, update your device to a newer version of Android or switch to a newer device. + Update Signal