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.

This commit is contained in:
Vitor Pamplona 2023-01-30 23:36:06 -03:00
parent c71c121356
commit b7bc8a0b9d
4 changed files with 20 additions and 9 deletions

View File

@ -62,10 +62,13 @@ abstract class NostrDataSource<T>(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))

View File

@ -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<String>
@Transient val originalAuthor: List<String>
@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())

View File

@ -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(

View File

@ -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")
}
)