diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt index fe8364c6e..b1a758f81 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt @@ -40,7 +40,7 @@ fun isValidURL(url: String?): Boolean { } @Composable -fun RichTextViewer(content: String, tags: List>?, note: Note, accountViewModel: AccountViewModel, navController: NavController) { +fun RichTextViewer(content: String, tags: List>?, navController: NavController) { Column(modifier = Modifier.padding(top = 5.dp)) { // FlowRow doesn't work well with paragraphs. So we need to split them content.split('\n').forEach { paragraph -> diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt index c2bcf3580..c6192f6c1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt @@ -177,16 +177,12 @@ fun ChatroomMessageCompose(baseNote: Note, innerQuote: Boolean = false, accountV RichTextViewer( eventContent, note.event?.tags, - note, - accountViewModel, navController ) else RichTextViewer( "Could Not decrypt the message", note.event?.tags, - note, - accountViewModel, navController ) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 98556a90d..2e2bfeff5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -183,7 +183,7 @@ fun NoteCompose(baseNote: Note, modifier: Modifier = Modifier, isInnerNote: Bool } else { val eventContent = note.event?.content if (eventContent != null) - RichTextViewer(eventContent, note.event?.tags, note, accountViewModel, navController) + RichTextViewer(eventContent, note.event?.tags, navController) if (note.event !is ChannelMessageEvent) { ReactionsRowState(note, accountViewModel) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt index 665838e70..72330422c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt @@ -4,12 +4,15 @@ import com.vitorpamplona.amethyst.model.Note abstract class Card() { abstract fun createdAt(): Long + abstract fun id(): String } class NoteCard(val note: Note): Card() { override fun createdAt(): Long { return note.event?.createdAt ?: 0 } + + override fun id() = note.idHex } class LikeSetCard(val note: Note, val likeEvents: List): Card() { @@ -18,6 +21,8 @@ class LikeSetCard(val note: Note, val likeEvents: List): Card() { override fun createdAt(): Long { return createdAt } + + override fun id() = note.idHex + createdAt } class BoostSetCard(val note: Note, val boostEvents: List): Card() { @@ -26,6 +31,8 @@ class BoostSetCard(val note: Note, val boostEvents: List): Card() { override fun createdAt(): Long { return createdAt } + + override fun id() = note.idHex + createdAt } sealed class CardFeedState { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedView.kt index fa442b853..967d3613c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedView.kt @@ -66,7 +66,7 @@ fun CardFeedView(viewModel: CardFeedViewModel, accountViewModel: AccountViewMode ), state = listState ) { - itemsIndexed(state.feed) { index, item -> + itemsIndexed(state.feed, key = { _, item -> item.id() }) { index, item -> when (item) { is NoteCard -> NoteCompose(item.note, isInnerNote = false, accountViewModel = accountViewModel, navController = navController) is LikeSetCard -> LikeSetCompose(item, isInnerNote = false, accountViewModel = accountViewModel, navController = navController) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt index 4a7670876..11f4fa418 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt @@ -203,7 +203,7 @@ fun NoteMaster(baseNote: Note, accountViewModel: AccountViewModel, navController Column() { val eventContent = note.event?.content if (eventContent != null) - RichTextViewer(eventContent, note.event?.tags, note, accountViewModel, navController) + RichTextViewer(eventContent, note.event?.tags, navController) ReactionsRowState(note, accountViewModel)