From b7bc8a0b9d988a9a9967e2ea3817e9a5c0312669 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 30 Jan 2023 23:36:06 -0300 Subject: [PATCH] Fixing Boost to add content of the post in the boosted event as well as selecting only the last one to show on the screen. --- .../vitorpamplona/amethyst/service/NostrDataSource.kt | 9 ++++++--- .../amethyst/service/model/RepostEvent.kt | 10 +++++++++- .../com/vitorpamplona/amethyst/ui/note/NoteCompose.kt | 6 +++--- .../amethyst/ui/screen/loggedIn/ProfileScreen.kt | 4 ++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt index 977d4cb71d..8030ee7648 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt @@ -62,10 +62,13 @@ abstract class NostrDataSource(val debugName: String) { is ContactListEvent -> LocalCache.consume(event) is PrivateDmEvent -> LocalCache.consume(event) is DeletionEvent -> LocalCache.consume(event) - is RepostEvent -> LocalCache.consume(event) - is ReactionEvent -> LocalCache.consume(event) else -> when (event.kind) { - RepostEvent.kind -> LocalCache.consume(RepostEvent(event.id, event.pubKey, event.createdAt, event.tags, event.content, event.sig)) + RepostEvent.kind -> { + val repostEvent = RepostEvent(event.id, event.pubKey, event.createdAt, event.tags, event.content, event.sig) + + repostEvent.containedPost?.let { onEvent(it, subscriptionId, relay) } + LocalCache.consume(repostEvent) + } ReactionEvent.kind -> LocalCache.consume(ReactionEvent(event.id, event.pubKey, event.createdAt, event.tags, event.content, event.sig)) ReportEvent.kind -> LocalCache.consume(ReportEvent(event.id, event.pubKey, event.createdAt, event.tags, event.content, event.sig)) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt index caf31c3403..3a1cc0a46a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/RepostEvent.kt @@ -1,5 +1,6 @@ package com.vitorpamplona.amethyst.service.model +import com.vitorpamplona.amethyst.service.relays.Client import java.util.Date import nostr.postr.Utils import nostr.postr.events.Event @@ -16,17 +17,24 @@ class RepostEvent ( @Transient val boostedPost: List @Transient val originalAuthor: List + @Transient val containedPost: Event? init { boostedPost = tags.filter { it.firstOrNull() == "e" }.mapNotNull { it.getOrNull(1) } originalAuthor = tags.filter { it.firstOrNull() == "p" }.mapNotNull { it.getOrNull(1) } + + containedPost = try { + fromJson(content, Client.lenient) + } catch (e: Exception) { + null + } } companion object { const val kind = 6 fun create(boostedPost: Event, privateKey: ByteArray, createdAt: Long = Date().time / 1000): RepostEvent { - val content = "" + val content = boostedPost.toJson() val replyToPost = listOf("e", boostedPost.id.toHex()) val replyToAuthor = listOf("p", boostedPost.pubKey.toHex()) 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 0c2614e75b..93e438c902 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 @@ -224,9 +224,9 @@ fun NoteCompose( } if (note.event is ReactionEvent || note.event is RepostEvent) { - note.replyTo?.mapIndexed { index, note -> + note.replyTo?.lastOrNull()?.let { NoteCompose( - note, + it, modifier = Modifier, isInnerNote = true, accountViewModel = accountViewModel, @@ -258,7 +258,7 @@ fun NoteCompose( RichTextViewer(eventContent, note.event?.tags, navController) } } - + ReactionsRow(note, accountViewModel) Divider( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt index 7567db739f..6f6746847f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt @@ -123,7 +123,7 @@ fun ProfileScreen(userId: String?, accountViewModel: AccountViewModel, navContro val pagerState = rememberPagerState() val coroutineScope = rememberCoroutineScope() - Column(modifier = Modifier.padding(start = 10.dp, end = 10.dp)) { + Column(modifier = Modifier.padding()) { TabRow( selectedTabIndex = pagerState.currentPage, indicator = { tabPositions -> @@ -153,7 +153,7 @@ fun ProfileScreen(userId: String?, accountViewModel: AccountViewModel, navContro selected = pagerState.currentPage == 2, onClick = { coroutineScope.launch { pagerState.animateScrollToPage(2) } }, text = { - Text(text = "${user.followers?.size ?: "--"} Follower") + Text(text = "${user.followers?.size ?: "--"} Followers") } )