Added support for base64 encoded pictures in Friends
This commit is contained in:
parent
785be0b1fd
commit
9f5951280a
2 changed files with 18 additions and 1 deletions
|
@ -372,8 +372,13 @@ private suspend fun loadContactPictureWithCoil(
|
||||||
} else {
|
} else {
|
||||||
val displayName = contact.contact.value?.name ?: contact.displayName.value.orEmpty()
|
val displayName = contact.contact.value?.name ?: contact.displayName.value.orEmpty()
|
||||||
val source = contact.contact.value?.getPictureUri(useThumbnail)
|
val source = contact.contact.value?.getPictureUri(useThumbnail)
|
||||||
|
val sourceStr = source.toString()
|
||||||
|
val base64 = if (ImageUtils.isBase64(sourceStr)) {
|
||||||
|
Log.d("[Coil] Picture URI is base64 encoded")
|
||||||
|
ImageUtils.getBase64ImageFromString(sourceStr)
|
||||||
|
} else null
|
||||||
|
|
||||||
imageView.load(source) {
|
imageView.load(base64 ?: source) {
|
||||||
transformations(CircleCropTransformation())
|
transformations(CircleCropTransformation())
|
||||||
error(
|
error(
|
||||||
if (displayName.isEmpty() || AppUtils.getInitials(displayName) == "+") {
|
if (displayName.isEmpty() || AppUtils.getInitials(displayName) == "+") {
|
||||||
|
|
|
@ -22,12 +22,24 @@ package org.linphone.utils
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.*
|
import android.graphics.*
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.util.Base64
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import org.linphone.compatibility.Compatibility
|
import org.linphone.compatibility.Compatibility
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
|
||||||
class ImageUtils {
|
class ImageUtils {
|
||||||
companion object {
|
companion object {
|
||||||
|
private const val BASE64_REGEX = "^data:image\\/(gif|png|jpeg|bmp|webp|svg\\+xml)(;charset=utf-8)?;base64,[A-Za-z0-9+\\/]+={0,2}\$"
|
||||||
|
|
||||||
|
fun isBase64(source: String): Boolean {
|
||||||
|
return source.matches(Regex(BASE64_REGEX))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getBase64ImageFromString(base64: String): ByteArray? {
|
||||||
|
val substring = base64.substring(base64.indexOf(",") + 1)
|
||||||
|
return Base64.decode(substring, Base64.DEFAULT)
|
||||||
|
}
|
||||||
|
|
||||||
fun getRoundBitmapFromUri(
|
fun getRoundBitmapFromUri(
|
||||||
context: Context,
|
context: Context,
|
||||||
fromPictureUri: Uri?
|
fromPictureUri: Uri?
|
||||||
|
|
Loading…
Reference in a new issue