Skip to content
Snippets Groups Projects
Commit 9c6c636a authored by Sebastian's avatar Sebastian Committed by Mikolai Gütschow
Browse files

Process avatar update events

parent b7539153
No related branches found
No related tags found
1 merge request!83Process avatar update events
Pipeline #8979 passed
......@@ -38,21 +38,22 @@ data class ContactItem(
avatar = avatar,
)
fun updateTimestampAndUnread(timestamp: Long, read: Boolean): ContactItem =
fun updateTimestampAndUnread(timestamp: Long, read: Boolean) =
copy(
isEmpty = false,
unread = if (read) unread else unread + 1,
timestamp = max(timestamp, this.timestamp)
)
fun updateIsConnected(c: Boolean): ContactItem {
return copy(isConnected = c)
}
fun updateIsConnected(c: Boolean) =
copy(isConnected = c)
fun updateAlias(a: String?): ContactItem {
return copy(alias = a)
}
fun updateAlias(a: String?) =
copy(alias = a)
fun updateFromMessagesRead(c: Int): ContactItem =
fun updateFromMessagesRead(c: Int) =
copy(unread = unread - c)
fun updateAvatar(avatar: ImageBitmap?) =
copy(avatar = avatar)
}
......@@ -17,6 +17,7 @@ import org.briarproject.briar.api.conversation.event.ConversationMessageTrackedE
import org.briarproject.briar.api.identity.AuthorManager
import org.briarproject.briar.desktop.conversation.ConversationMessagesReadEvent
import org.briarproject.briar.desktop.threading.BriarExecutors
import org.briarproject.briar.desktop.utils.ImageUtils
import org.briarproject.briar.desktop.viewmodel.asState
import javax.inject.Inject
......@@ -27,7 +28,7 @@ constructor(
authorManager: AuthorManager,
conversationManager: ConversationManager,
connectionRegistry: ConnectionRegistry,
attachmentReader: AttachmentReader,
private val attachmentReader: AttachmentReader,
briarExecutors: BriarExecutors,
lifecycleManager: LifecycleManager,
db: TransactionManager,
......@@ -97,7 +98,16 @@ constructor(
}
is AvatarUpdatedEvent -> {
LOG.info("received avatar update: ${e.attachmentHeader}")
// TODO: update avatar
if (e.attachmentHeader == null) {
updateItem(e.contactId) { it.updateAvatar(null) }
} else {
runOnDbThreadWithTransaction(true) { txn ->
val image = ImageUtils.loadAvatar(txn, attachmentReader, e.attachmentHeader)
txn.attach {
updateItem(e.contactId) { it.updateAvatar(image) }
}
}
}
}
}
}
......
......@@ -4,6 +4,7 @@ import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.res.loadImageBitmap
import org.briarproject.bramble.api.contact.Contact
import org.briarproject.bramble.api.db.Transaction
import org.briarproject.briar.api.attachment.AttachmentHeader
import org.briarproject.briar.api.attachment.AttachmentReader
import org.briarproject.briar.api.identity.AuthorManager
......@@ -13,13 +14,19 @@ object ImageUtils {
authorManager: AuthorManager,
attachmentReader: AttachmentReader,
txn: Transaction,
contact: Contact
contact: Contact,
): ImageBitmap? {
val authorInfo = authorManager.getAuthorInfo(txn, contact)
if (authorInfo.avatarHeader == null) {
return null
}
val attachment = attachmentReader.getAttachment(txn, authorInfo.avatarHeader)
val avatarHeader = authorInfo.avatarHeader ?: return null
return loadAvatar(txn, attachmentReader, avatarHeader)
}
fun loadAvatar(
txn: Transaction,
attachmentReader: AttachmentReader,
attachmentHeader: AttachmentHeader,
): ImageBitmap? {
val attachment = attachmentReader.getAttachment(txn, attachmentHeader)
attachment.stream.use {
return loadImageBitmap(it)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment