Replaced elmo avatar placeholder by Color+Initial
This commit is contained in:
parent
7f6cc7c32a
commit
79aff9104a
@ -49,16 +49,18 @@ object NetworkImageLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun rememberNetworkImage(url: String): ImageBitmap {
|
fun rememberNetworkImageOrNull(url: String, placeHolderImageRes: String? = null): ImageBitmap? {
|
||||||
val networkImageLoader = NetworkImageLoader
|
val networkImageLoader = NetworkImageLoader
|
||||||
var image by remember(url) {
|
var image by remember(url) {
|
||||||
mutableStateOf(
|
val placeHolderImage = if(placeHolderImageRes != null)
|
||||||
useResource("image.jpg") {
|
useResource(placeHolderImageRes) {
|
||||||
Image.makeFromEncoded(it.toByteArray()).toComposeImageBitmap()
|
Image.makeFromEncoded(it.toByteArray()).toComposeImageBitmap()
|
||||||
}
|
}
|
||||||
)
|
else
|
||||||
|
null
|
||||||
|
|
||||||
|
mutableStateOf(placeHolderImage)
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(url) {
|
LaunchedEffect(url) {
|
||||||
@ -71,4 +73,3 @@ fun rememberNetworkImage(url: String): ImageBitmap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun ByteArray.toComposeImage() = Image.makeFromEncoded(this).toComposeImageBitmap()
|
fun ByteArray.toComposeImage() = Image.makeFromEncoded(this).toComposeImageBitmap()
|
||||||
|
|
||||||
|
@ -20,11 +20,11 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import app.extensions.*
|
import app.extensions.*
|
||||||
import app.git.GitManager
|
import app.git.GitManager
|
||||||
import app.images.rememberNetworkImage
|
|
||||||
import app.theme.headerBackground
|
import app.theme.headerBackground
|
||||||
import app.theme.headerText
|
import app.theme.headerText
|
||||||
import app.theme.primaryTextColor
|
import app.theme.primaryTextColor
|
||||||
import app.theme.secondaryTextColor
|
import app.theme.secondaryTextColor
|
||||||
|
import app.ui.components.AvatarImage
|
||||||
import app.ui.components.ScrollableLazyColumn
|
import app.ui.components.ScrollableLazyColumn
|
||||||
import app.ui.components.TooltipText
|
import app.ui.components.TooltipText
|
||||||
import org.eclipse.jgit.diff.DiffEntry
|
import org.eclipse.jgit.diff.DiffEntry
|
||||||
@ -108,14 +108,11 @@ fun Author(commit: RevCommit) {
|
|||||||
.background(MaterialTheme.colors.background),
|
.background(MaterialTheme.colors.background),
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
val url = "https://www.gravatar.com/avatar/${authorIdent.emailAddress.md5}"
|
AvatarImage(
|
||||||
Image(
|
|
||||||
bitmap = rememberNetworkImage(url),
|
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(horizontal = 16.dp)
|
.padding(horizontal = 16.dp)
|
||||||
.height(40.dp)
|
.size(40.dp),
|
||||||
.clip(CircleShape),
|
personIdent = commit.authorIdent,
|
||||||
contentDescription = null,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
|
62
src/main/kotlin/app/ui/components/AvatarImage.kt
Normal file
62
src/main/kotlin/app/ui/components/AvatarImage.kt
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package app.ui.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.Image
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
|
import androidx.compose.material.MaterialTheme
|
||||||
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.clip
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.ImageBitmap
|
||||||
|
import app.extensions.md5
|
||||||
|
import app.images.rememberNetworkImageOrNull
|
||||||
|
import org.eclipse.jgit.lib.PersonIdent
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun AvatarImage(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
personIdent: PersonIdent,
|
||||||
|
color: Color = MaterialTheme.colors.primary
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = modifier
|
||||||
|
.clip(CircleShape)
|
||||||
|
) {
|
||||||
|
val avatar = rememberAvatar(personIdent.emailAddress)
|
||||||
|
if(avatar == null) {
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.background(color),
|
||||||
|
contentAlignment = Alignment.Center,
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = personIdent.name.firstOrNull()?.uppercase() ?: "#",
|
||||||
|
color = Color.White,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Image(
|
||||||
|
bitmap = avatar,
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize(),
|
||||||
|
contentDescription = null,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun rememberAvatar(email: String): ImageBitmap? {
|
||||||
|
val url = "https://www.gravatar.com/avatar/${email.md5}?s=60&d=404"
|
||||||
|
return rememberNetworkImageOrNull(
|
||||||
|
url = url,
|
||||||
|
placeHolderImageRes = null,
|
||||||
|
)
|
||||||
|
}
|
@ -37,9 +37,9 @@ import app.extensions.*
|
|||||||
import app.git.GitManager
|
import app.git.GitManager
|
||||||
import app.git.LogStatus
|
import app.git.LogStatus
|
||||||
import app.git.graph.GraphNode
|
import app.git.graph.GraphNode
|
||||||
import app.images.rememberNetworkImage
|
|
||||||
import app.theme.*
|
import app.theme.*
|
||||||
import app.ui.SelectedItem
|
import app.ui.SelectedItem
|
||||||
|
import app.ui.components.AvatarImage
|
||||||
import app.ui.components.ScrollableLazyColumn
|
import app.ui.components.ScrollableLazyColumn
|
||||||
import app.ui.context_menu.branchContextMenuItems
|
import app.ui.context_menu.branchContextMenuItems
|
||||||
import app.ui.context_menu.tagContextMenuItems
|
import app.ui.context_menu.tagContextMenuItems
|
||||||
@ -592,12 +592,10 @@ fun CommitNode(
|
|||||||
.border(2.dp, color, shape = CircleShape)
|
.border(2.dp, color, shape = CircleShape)
|
||||||
.clip(CircleShape)
|
.clip(CircleShape)
|
||||||
) {
|
) {
|
||||||
val url = "https://www.gravatar.com/avatar/${plotCommit.authorIdent.emailAddress.md5}?s=60"
|
AvatarImage(
|
||||||
Image(
|
modifier = Modifier.fillMaxSize(),
|
||||||
bitmap = rememberNetworkImage(url),
|
personIdent = plotCommit.authorIdent,
|
||||||
modifier = Modifier
|
color = color,
|
||||||
.fillMaxSize(),
|
|
||||||
contentDescription = null
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.5 KiB |
Loading…
Reference in New Issue
Block a user