Blur avatar photos from unknown senders when in message request state.

This commit is contained in:
Cody Henthorne
2021-04-23 14:42:51 -04:00
committed by GitHub
parent bf124b87fa
commit ad81b310e3
19 changed files with 546 additions and 113 deletions

View File

@@ -5,16 +5,21 @@ import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.net.Uri
import com.bumptech.glide.load.MultiTransformation
import com.bumptech.glide.load.Transformation
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto
import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto
import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.BitmapUtil
import org.thoughtcrime.securesms.util.BlurTransformation
import java.util.concurrent.ExecutionException
fun Drawable?.toLargeBitmap(context: Context): Bitmap? {
@@ -32,10 +37,16 @@ fun Recipient.getContactDrawable(context: Context): Drawable? {
val fallbackContactPhoto: FallbackContactPhoto = if (isSelf) getFallback(context) else fallbackContactPhoto
return if (contactPhoto != null) {
try {
val transforms: MutableList<Transformation<Bitmap>> = mutableListOf()
if (shouldBlurAvatar()) {
transforms += BlurTransformation(ApplicationDependencies.getApplication(), 0.25f, BlurTransformation.MAX_RADIUS)
}
transforms += CircleCrop()
GlideApp.with(context.applicationContext)
.load(contactPhoto)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.circleCrop()
.transform(MultiTransformation(transforms))
.submit(
context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_width),
context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height)