kopia lustrzana https://github.com/ryukoposting/Signal-Android
70 wiersze
2.5 KiB
Kotlin
70 wiersze
2.5 KiB
Kotlin
package org.thoughtcrime.securesms.notifications.v2
|
|
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.graphics.Bitmap
|
|
import android.graphics.drawable.Drawable
|
|
import android.net.Uri
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
|
import org.thoughtcrime.securesms.R
|
|
import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto
|
|
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto
|
|
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 java.util.concurrent.ExecutionException
|
|
|
|
fun Drawable?.toLargeBitmap(context: Context): Bitmap? {
|
|
if (this == null) {
|
|
return null
|
|
}
|
|
|
|
val largeIconTargetSize: Int = context.resources.getDimensionPixelSize(R.dimen.contact_photo_target_size)
|
|
|
|
return BitmapUtil.createFromDrawable(this, largeIconTargetSize, largeIconTargetSize)
|
|
}
|
|
|
|
fun Recipient.getContactDrawable(context: Context): Drawable? {
|
|
val contactPhoto: ContactPhoto? = contactPhoto
|
|
val fallbackContactPhoto: FallbackContactPhoto = fallbackContactPhoto
|
|
return if (contactPhoto != null) {
|
|
try {
|
|
GlideApp.with(context.applicationContext)
|
|
.load(contactPhoto)
|
|
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
|
.circleCrop()
|
|
.submit(
|
|
context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_width),
|
|
context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height)
|
|
)
|
|
.get()
|
|
} catch (e: InterruptedException) {
|
|
fallbackContactPhoto.asDrawable(context, color.toConversationColor(context))
|
|
} catch (e: ExecutionException) {
|
|
fallbackContactPhoto.asDrawable(context, color.toConversationColor(context))
|
|
}
|
|
} else {
|
|
fallbackContactPhoto.asDrawable(context, color.toConversationColor(context))
|
|
}
|
|
}
|
|
|
|
fun Uri.toBitmap(context: Context, dimension: Int): Bitmap {
|
|
return try {
|
|
GlideApp.with(context.applicationContext)
|
|
.asBitmap()
|
|
.load(DecryptableUri(this))
|
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
|
.submit(dimension, dimension)
|
|
.get()
|
|
} catch (e: InterruptedException) {
|
|
Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565)
|
|
} catch (e: ExecutionException) {
|
|
Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565)
|
|
}
|
|
}
|
|
|
|
fun Intent.makeUniqueToPreventMerging(): Intent {
|
|
return setData((Uri.parse("custom://" + System.currentTimeMillis())))
|
|
}
|