Fixes missing context in some replies to blog posts.

This commit is contained in:
Vitor Pamplona
2024-03-20 16:47:53 -04:00
parent ceca149eb7
commit f3c4b3255b
2 changed files with 22 additions and 4 deletions
@@ -751,11 +751,13 @@ private fun ReplyRow(
val replyingDirectlyTo =
remember(note) {
if (noteEvent is BaseTextNoteEvent) {
val replyingTo = noteEvent.replyingTo()
val replyingTo = noteEvent.replyingToAddressOrEvent()
if (replyingTo != null) {
note.replyTo?.firstOrNull {
// important to test both ids in case it's a replaceable event.
it.idHex == replyingTo || it.event?.id() == replyingTo
val newNote = accountViewModel.getNoteIfExists(replyingTo)
if (newNote != null && newNote.channelHex() == null && newNote.event?.kind() != CommunityDefinitionEvent.KIND) {
newNote
} else {
note.replyTo?.lastOrNull { it.event?.kind() != CommunityDefinitionEvent.KIND }
}
} else {
note.replyTo?.lastOrNull { it.event?.kind() != CommunityDefinitionEvent.KIND }
@@ -79,6 +79,22 @@ open class BaseTextNoteEvent(
return newStyleReply ?: newStyleRoot ?: oldStylePositional
}
fun replyingToAddress(): ATag? {
val oldStylePositional = tags.lastOrNull { it.size > 1 && it[0] == "a" }?.let { ATag.parseAtag(it[1], it[2]) }
val newStyleReply = tags.lastOrNull { it.size > 3 && it[0] == "a" && it[3] == "reply" }?.let { ATag.parseAtag(it[1], it[2]) }
val newStyleRoot = tags.lastOrNull { it.size > 3 && it[0] == "a" && it[3] == "root" }?.let { ATag.parseAtag(it[1], it[2]) }
return newStyleReply ?: newStyleRoot ?: oldStylePositional
}
fun replyingToAddressOrEvent(): String? {
val oldStylePositional = tags.lastOrNull { it.size > 1 && (it[0] == "e" || it[0] == "a") }?.get(1)
val newStyleReply = tags.lastOrNull { it.size > 3 && (it[0] == "e" || it[0] == "a") && it[3] == "reply" }?.get(1)
val newStyleRoot = tags.lastOrNull { it.size > 3 && (it[0] == "e" || it[0] == "a") && it[3] == "root" }?.get(1)
return newStyleReply ?: newStyleRoot ?: oldStylePositional
}
@Transient private var citedUsersCache: Set<String>? = null
@Transient private var citedNotesCache: Set<String>? = null