Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit d377f697 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé
Browse files

feat(message-list): add click support to MessageItemContent

parent f5d50887
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -22,6 +22,10 @@ internal fun MessageItemContentPreview() {
            item = fakeMessageListItem,
            isActive = true,
            isSelected = false,
            onClick = {},
            onLongClick = {},
            onAvatarClick = {},
            onFavouriteClick = {},
        )
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -291,6 +291,10 @@ class MessageListAdapter internal constructor(
        ComposableMessageViewHolder.create(
            context = parent.context,
            themeProvider = themeProvider,
            onClick = { listItemListener.onMessageClicked(it) },
            onLongClick = { listItemListener.onToggleMessageSelection(it) },
            onFavouriteClick = { listItemListener.onToggleMessageFlag(it) },
            onAvatarClick = { listItemListener.onToggleMessageSelection(it) },
        )

    override fun onBindViewHolder(holder: MessageListViewHolder, position: Int) {
+16 −0
Original line number Diff line number Diff line
@@ -11,6 +11,10 @@ import net.thunderbird.core.ui.theme.api.FeatureThemeProvider
class ComposableMessageViewHolder(
    private val composeView: ComposeView,
    private val themeProvider: FeatureThemeProvider,
    private val onClick: (MessageListItem) -> Unit,
    private val onLongClick: (MessageListItem) -> Unit,
    private val onAvatarClick: (MessageListItem) -> Unit,
    private val onFavouriteClick: (MessageListItem) -> Unit,
) : MessageListViewHolder(composeView) {

    var uniqueId: Long = -1L
@@ -24,6 +28,10 @@ class ComposableMessageViewHolder(
                    item = item,
                    isActive = isActive,
                    isSelected = isSelected,
                    onClick = { onClick(item) },
                    onLongClick = { onLongClick(item) },
                    onAvatarClick = { onAvatarClick(item) },
                    onFavouriteClick = { onFavouriteClick(item) },
                )
            }
        }
@@ -34,12 +42,20 @@ class ComposableMessageViewHolder(
        fun create(
            context: Context,
            themeProvider: FeatureThemeProvider,
            onClick: (MessageListItem) -> Unit,
            onLongClick: (MessageListItem) -> Unit,
            onFavouriteClick: (MessageListItem) -> Unit,
            onAvatarClick: (MessageListItem) -> Unit,
        ): ComposableMessageViewHolder {
            val composeView = ComposeView(context)

            val holder = ComposableMessageViewHolder(
                composeView = composeView,
                themeProvider = themeProvider,
                onClick = onClick,
                onLongClick = onLongClick,
                onAvatarClick = onAvatarClick,
                onFavouriteClick = onFavouriteClick,
            )

            composeView.tag = holder
+28 −13
Original line number Diff line number Diff line
package com.fsck.k9.ui.messagelist.item

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium
import app.k9mail.core.ui.compose.theme2.MainTheme
import com.fsck.k9.ui.messagelist.MessageListItem
import kotlin.time.Clock
import kotlin.time.ExperimentalTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
import net.thunderbird.core.ui.compose.designsystem.organism.message.UnreadMessageItem

@OptIn(ExperimentalTime::class)
@Composable
internal fun MessageItemContent(item: MessageListItem, isActive: Boolean, isSelected: Boolean) {
    Column(
        modifier = Modifier
            .padding(MainTheme.spacings.default),
internal fun MessageItemContent(
    item: MessageListItem,
    isActive: Boolean,
    isSelected: Boolean,
    onClick: () -> Unit,
    onLongClick: () -> Unit,
    onAvatarClick: () -> Unit,
    onFavouriteClick: (Boolean) -> Unit,
) {
        TextBodyMedium(text = "UniqueId: ${item.uniqueId}")
        TextBodyMedium(text = "Active: $isActive, Selected: $isSelected")
    }
    UnreadMessageItem(
        sender = "${item.displayName}",
        subject = item.subject ?: "n/a",
        preview = item.previewText,
        receivedAt = Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault()),
        avatar = {},
        onClick = onClick,
        onLongClick = onLongClick,
        onLeadingClick = onAvatarClick,
        onFavouriteChange = onFavouriteClick,
        favourite = item.isStarred,
        selected = isSelected,
    )
}