ganfra
2 weeks ago
21 changed files with 95 additions and 68 deletions
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.features.messages.impl.timeline.model.virtual |
||||
|
||||
data object TimelineItemTypingNotificationModel : TimelineItemVirtualModel { |
||||
override val type: String = "TimelineItemTypingNotificationModel" |
||||
} |
@ -1,35 +0,0 @@
@@ -1,35 +0,0 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.features.messages.impl.typing |
||||
|
||||
import androidx.compose.runtime.Composable |
||||
import androidx.compose.ui.tooling.preview.PreviewParameter |
||||
import io.element.android.features.messages.impl.MessagesView |
||||
import io.element.android.features.messages.impl.aMessagesState |
||||
import io.element.android.libraries.designsystem.preview.ElementPreview |
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight |
||||
|
||||
@PreviewsDayNight |
||||
@Composable |
||||
internal fun MessagesViewWithTypingPreview( |
||||
@PreviewParameter(TypingNotificationStateForMessagesProvider::class) typingState: TypingNotificationState |
||||
) = ElementPreview { |
||||
MessagesView( |
||||
state = aMessagesState().copy(typingNotificationState = typingState), |
||||
onBackClick = {}, |
||||
onRoomDetailsClick = {}, |
||||
onEventClick = { false }, |
||||
onUserDataClick = {}, |
||||
onLinkClick = {}, |
||||
onPreviewAttachments = {}, |
||||
onSendLocationClick = {}, |
||||
onCreatePollClick = {}, |
||||
onJoinCallClick = {}, |
||||
onViewAllPinnedMessagesClick = {}, |
||||
) |
||||
} |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.timeline.postprocessor |
||||
|
||||
import io.element.android.libraries.matrix.api.core.UniqueId |
||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem |
||||
import io.element.android.libraries.matrix.api.timeline.Timeline |
||||
import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem |
||||
|
||||
/** |
||||
* This post processor is responsible for adding a typing notification item to the timeline items when the timeline is in live mode. |
||||
*/ |
||||
class TypingNotificationPostProcessor(private val mode: Timeline.Mode) { |
||||
|
||||
fun process(items: List<MatrixTimelineItem>): List<MatrixTimelineItem> { |
||||
return if (mode == Timeline.Mode.LIVE) { |
||||
buildList { |
||||
addAll(items) |
||||
add( |
||||
MatrixTimelineItem.Virtual( |
||||
uniqueId = UniqueId("TypingNotification"), |
||||
virtual = VirtualTimelineItem.TypingNotification |
||||
) |
||||
) |
||||
} |
||||
} else { |
||||
items |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue