Removes decryption for DVM responses since it doesn't encrypt statuses
This commit is contained in:
+23
-52
@@ -24,7 +24,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.derivedStateOf
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
@@ -33,12 +32,10 @@ import com.vitorpamplona.amethyst.model.Note
|
|||||||
import com.vitorpamplona.amethyst.ui.components.GenericLoadable
|
import com.vitorpamplona.amethyst.ui.components.GenericLoadable
|
||||||
import com.vitorpamplona.amethyst.ui.components.SensitivityWarning
|
import com.vitorpamplona.amethyst.ui.components.SensitivityWarning
|
||||||
import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer
|
import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer
|
||||||
import com.vitorpamplona.amethyst.ui.note.LoadDecryptedContent
|
|
||||||
import com.vitorpamplona.amethyst.ui.note.elements.DisplayUncitedHashtags
|
import com.vitorpamplona.amethyst.ui.note.elements.DisplayUncitedHashtags
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.quartz.events.EmptyTagList
|
import com.vitorpamplona.quartz.events.EmptyTagList
|
||||||
import com.vitorpamplona.quartz.events.Event
|
import com.vitorpamplona.quartz.events.NIP90ContentDiscoveryResponseEvent
|
||||||
import com.vitorpamplona.quartz.events.TextNoteEvent
|
|
||||||
import com.vitorpamplona.quartz.events.toImmutableListOfLists
|
import com.vitorpamplona.quartz.events.toImmutableListOfLists
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@@ -53,57 +50,31 @@ fun RenderNIP90ContentDiscoveryResponse(
|
|||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
nav: (String) -> Unit,
|
nav: (String) -> Unit,
|
||||||
) {
|
) {
|
||||||
val noteEvent = note.event as? Event ?: return
|
val noteEvent = note.event as? NIP90ContentDiscoveryResponseEvent ?: return
|
||||||
|
|
||||||
LoadDecryptedContent(
|
SensitivityWarning(
|
||||||
note,
|
note = note,
|
||||||
accountViewModel,
|
accountViewModel = accountViewModel,
|
||||||
) { body ->
|
) {
|
||||||
val eventContent by
|
val modifier = remember(note) { Modifier.fillMaxWidth() }
|
||||||
remember(note.event) {
|
val tags =
|
||||||
derivedStateOf {
|
remember(note) { note.event?.tags()?.toImmutableListOfLists() ?: EmptyTagList }
|
||||||
val subject = (note.event as? TextNoteEvent)?.subject()?.ifEmpty { null }
|
|
||||||
val newBody =
|
|
||||||
if (editState.value is GenericLoadable.Loaded) {
|
|
||||||
val state =
|
|
||||||
(editState.value as? GenericLoadable.Loaded)?.loaded?.modificationToShow
|
|
||||||
state?.value?.event?.content() ?: body
|
|
||||||
} else {
|
|
||||||
body
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!subject.isNullOrBlank() && !newBody.split("\n")[0].contains(subject)) {
|
TranslatableRichTextViewer(
|
||||||
"### $subject\n$newBody"
|
content = noteEvent.content,
|
||||||
} else {
|
canPreview = canPreview && !makeItShort,
|
||||||
newBody
|
quotesLeft = quotesLeft,
|
||||||
}
|
modifier = modifier,
|
||||||
}
|
tags = tags,
|
||||||
}
|
backgroundColor = backgroundColor,
|
||||||
|
id = note.idHex,
|
||||||
SensitivityWarning(
|
callbackUri = note.toNostrUri(),
|
||||||
note = note,
|
|
||||||
accountViewModel = accountViewModel,
|
accountViewModel = accountViewModel,
|
||||||
) {
|
nav = nav,
|
||||||
val modifier = remember(note) { Modifier.fillMaxWidth() }
|
)
|
||||||
val tags =
|
}
|
||||||
remember(note) { note.event?.tags()?.toImmutableListOfLists() ?: EmptyTagList }
|
|
||||||
|
|
||||||
TranslatableRichTextViewer(
|
if (noteEvent.hasHashtags()) {
|
||||||
content = eventContent,
|
DisplayUncitedHashtags(noteEvent, noteEvent.content, nav)
|
||||||
canPreview = canPreview && !makeItShort,
|
|
||||||
quotesLeft = quotesLeft,
|
|
||||||
modifier = modifier,
|
|
||||||
tags = tags,
|
|
||||||
backgroundColor = backgroundColor,
|
|
||||||
id = note.idHex,
|
|
||||||
callbackUri = note.toNostrUri(),
|
|
||||||
accountViewModel = accountViewModel,
|
|
||||||
nav = nav,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (noteEvent.hasHashtags()) {
|
|
||||||
DisplayUncitedHashtags(noteEvent, eventContent, nav)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,17 +24,12 @@ import androidx.compose.material3.Text
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.derivedStateOf
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import com.vitorpamplona.amethyst.model.Note
|
import com.vitorpamplona.amethyst.model.Note
|
||||||
import com.vitorpamplona.amethyst.ui.components.GenericLoadable
|
import com.vitorpamplona.amethyst.ui.components.GenericLoadable
|
||||||
import com.vitorpamplona.amethyst.ui.note.LoadDecryptedContent
|
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import com.vitorpamplona.quartz.events.BaseTextNoteEvent
|
import com.vitorpamplona.quartz.events.NIP90StatusEvent
|
||||||
import com.vitorpamplona.quartz.events.CommunityDefinitionEvent
|
|
||||||
import com.vitorpamplona.quartz.events.TextNoteEvent
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RenderNIP90Status(
|
fun RenderNIP90Status(
|
||||||
@@ -48,61 +43,7 @@ fun RenderNIP90Status(
|
|||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
nav: (String) -> Unit,
|
nav: (String) -> Unit,
|
||||||
) {
|
) {
|
||||||
val noteEvent = note.event
|
val noteEvent = note.event as? NIP90StatusEvent ?: return
|
||||||
|
|
||||||
val showReply by
|
Text(text = noteEvent.content)
|
||||||
remember(note) {
|
|
||||||
derivedStateOf {
|
|
||||||
noteEvent is BaseTextNoteEvent && !makeItShort && unPackReply && (note.replyTo != null || noteEvent.hasAnyTaggedUser())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (showReply) {
|
|
||||||
val replyingDirectlyTo =
|
|
||||||
remember(note) {
|
|
||||||
if (noteEvent is BaseTextNoteEvent) {
|
|
||||||
val replyingTo = noteEvent.replyingToAddressOrEvent()
|
|
||||||
if (replyingTo != null) {
|
|
||||||
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 }
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
note.replyTo?.lastOrNull { it.event?.kind() != CommunityDefinitionEvent.KIND }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LoadDecryptedContent(
|
|
||||||
note,
|
|
||||||
accountViewModel,
|
|
||||||
) { body ->
|
|
||||||
val eventContent by
|
|
||||||
remember(note.event) {
|
|
||||||
derivedStateOf {
|
|
||||||
val subject = (note.event as? TextNoteEvent)?.subject()?.ifEmpty { null }
|
|
||||||
val newBody =
|
|
||||||
if (editState.value is GenericLoadable.Loaded) {
|
|
||||||
val state =
|
|
||||||
(editState.value as? GenericLoadable.Loaded)?.loaded?.modificationToShow
|
|
||||||
state?.value?.event?.content() ?: body
|
|
||||||
} else {
|
|
||||||
body
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!subject.isNullOrBlank() && !newBody.split("\n")[0].contains(subject)) {
|
|
||||||
"### $subject\n$newBody"
|
|
||||||
} else {
|
|
||||||
newBody
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Text(text = eventContent)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user