Add badge treatments as per spec.

This commit is contained in:
Alex Hart
2021-11-03 10:44:36 -03:00
committed by Greyson Parrelli
parent 70355aa70e
commit 7bbfc2d34c
10 changed files with 110 additions and 23 deletions

View File

@@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.badges.glide.BadgeSpriteTransformation
import org.thoughtcrime.securesms.badges.models.Badge
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.mms.GlideRequests
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.ThemeUtil
import org.thoughtcrime.securesms.util.visible
@@ -28,31 +29,46 @@ class BadgeImageView @JvmOverloads constructor(
}
fun setBadgeFromRecipient(recipient: Recipient?) {
getGlideRequests()?.let {
setBadgeFromRecipient(recipient, it)
}
}
fun setBadgeFromRecipient(recipient: Recipient?, glideRequests: GlideRequests) {
if (recipient == null || recipient.badges.isEmpty()) {
setBadge(null)
setBadge(null, glideRequests)
} else {
setBadge(recipient.badges[0])
setBadge(recipient.badges[0], glideRequests)
}
}
fun setBadge(badge: Badge?) {
getGlideRequests()?.let {
setBadge(badge, it)
}
}
fun setBadge(badge: Badge?, glideRequests: GlideRequests) {
visible = badge != null
try {
if (badge != null) {
GlideApp
.with(this)
.load(badge)
.downsample(DownsampleStrategy.NONE)
.transform(BadgeSpriteTransformation(BadgeSpriteTransformation.Size.fromInteger(badgeSize), badge.imageDensity, ThemeUtil.isDarkTheme(context)))
.into(this)
} else {
GlideApp
.with(this)
.clear(this)
}
if (badge != null) {
glideRequests
.load(badge)
.downsample(DownsampleStrategy.NONE)
.transform(BadgeSpriteTransformation(BadgeSpriteTransformation.Size.fromInteger(badgeSize), badge.imageDensity, ThemeUtil.isDarkTheme(context)))
.into(this)
} else {
glideRequests
.clear(this)
}
}
private fun getGlideRequests(): GlideRequests? {
return try {
GlideApp.with(this)
} catch (e: IllegalArgumentException) {
// Do nothing. Activity was destroyed.
// View not attached to an activity or activity destroyed
null
}
}
}