From b9a11655518ecf55cda0e4950f0f1866685d6b8c Mon Sep 17 00:00:00 2001 From: davotoula Date: Sat, 9 May 2026 13:21:45 +0200 Subject: [PATCH] feat(note): copy raw JSON action in dropdown menu --- .../amethyst/ui/note/elements/DropDownMenu.kt | 14 ++++++++++++++ amethyst/src/main/res/values/strings.xml | 1 + 2 files changed, 15 insertions(+) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt index 1100c439f..180aff43f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt @@ -53,6 +53,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.report.ReportNoteDialog import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Size24Modifier +import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper import com.vitorpamplona.quartz.nip01Core.tags.aTag.isTaggedAddressableNote import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip23LongContent.LongTextNoteEvent @@ -63,6 +64,7 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext @Composable fun MoreOptionsButton( @@ -204,6 +206,18 @@ fun NoteDropDownMenu( onDismiss() } } + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_raw_json)) { + val event = note.event + if (event != null) { + scope.launch { + val json = withContext(Dispatchers.Default) { JacksonMapper.toJsonPretty(event) } + clipboardManager.setText(json) + onDismiss() + } + } else { + onDismiss() + } + } M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.quick_action_share)) { val sendIntent = Intent().apply { diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index 4ac4613a6..009f3e25c 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -32,6 +32,7 @@ Copy Text Copy Author ID Copy Note ID + Copy raw JSON Broadcast Timestamp it Timestamp: Pending Confirmations