From c274805eb0348bf55108b0be035d67c5bd8dab19 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 4 Feb 2026 11:39:01 -0400 Subject: [PATCH] Utilze localized description for calculating badge line count. --- .../securesms/badges/models/LargeBadge.kt | 15 ++++++++++----- .../view/ViewBadgeBottomSheetDialogFragment.kt | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/models/LargeBadge.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/models/LargeBadge.kt index 7a702d3ce0..7f204c7c3f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/models/LargeBadge.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/models/LargeBadge.kt @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.badges.models +import android.content.Context import android.view.View import android.widget.TextView import org.thoughtcrime.securesms.R @@ -43,11 +44,7 @@ data class LargeBadge( badge.setBadge(model.largeBadge.badge) name.text = context.getString(R.string.ViewBadgeBottomSheetDialogFragment__s_supports_signal, model.shortName) - description.text = if (model.largeBadge.badge.isSubscription()) { - context.getString(R.string.ViewBadgeBottomSheetDialogFragment__s_supports_signal_with_a_monthly, model.shortName) - } else { - context.getString(R.string.ViewBadgeBottomSheetDialogFragment__s_supports_signal_with_a_donation, model.shortName) - } + description.text = getDescription(context, model.largeBadge.badge.isSubscription(), model.shortName) description.setLines(model.maxLines) description.maxLines = model.maxLines @@ -56,6 +53,14 @@ data class LargeBadge( } companion object { + fun getDescription(context: Context, isSubscriptionBadge: Boolean, shortName: String): String { + return if (isSubscriptionBadge) { + context.getString(R.string.ViewBadgeBottomSheetDialogFragment__s_supports_signal_with_a_monthly, shortName) + } else { + context.getString(R.string.ViewBadgeBottomSheetDialogFragment__s_supports_signal_with_a_donation, shortName) + } + } + fun register(mappingAdapter: MappingAdapter) { mappingAdapter.registerFactory(Model::class.java, LayoutFactory({ ViewHolder(it) }, R.layout.view_badge_bottom_sheet_dialog_fragment_page)) mappingAdapter.registerFactory(EmptyModel::class.java, LayoutFactory({ EmptyViewHolder(it) }, R.layout.view_badge_bottom_sheet_dialog_fragment_page)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt index 0bf3824625..c341415e98 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt @@ -101,7 +101,7 @@ class ViewBadgeBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDialogFr var maxLines = 3 state.allBadgesVisibleOnProfile.forEach { badge -> - val text = badge.resolveDescription(state.recipient.getShortDisplayName(requireContext())) + val text = LargeBadge.getDescription(requireContext(), badge.isSubscription(), state.recipient.getShortDisplayName(requireContext())) textPaint.getTextBounds(text, 0, text.length, textBounds) val estimatedLines = ceil(textBounds.width().toFloat() / textWidth).toInt() maxLines = max(maxLines, estimatedLines)