From e876e2b09b473fb35e51f189e1169b4b2e993412 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 14:54:48 +0000 Subject: [PATCH] feat(zap-splits): hide single-author zap split row in NoteCompose MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a note's only zap split recipient is the post author, the split is redundant — the author already receives the zap. Skip rendering the row in those cases by gating on a new `hasZapSplitSetupBesidesAuthor` helper. --- .../com/vitorpamplona/amethyst/ui/note/NoteCompose.kt | 8 ++++---- .../vitorpamplona/quartz/nip57Zaps/splits/EventExt.kt | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 8ee29194a5..4c3e3dfd08 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -275,7 +275,7 @@ import com.vitorpamplona.quartz.nip53LiveActivities.streaming.LiveActivitiesEven import com.vitorpamplona.quartz.nip54Wiki.WikiNoteEvent import com.vitorpamplona.quartz.nip56Reports.ReportEvent import com.vitorpamplona.quartz.nip57Zaps.LnZapEvent -import com.vitorpamplona.quartz.nip57Zaps.splits.hasZapSplitSetup +import com.vitorpamplona.quartz.nip57Zaps.splits.hasZapSplitSetupBesidesAuthor import com.vitorpamplona.quartz.nip58Badges.award.BadgeAwardEvent import com.vitorpamplona.quartz.nip58Badges.definition.BadgeDefinitionEvent import com.vitorpamplona.quartz.nip5aStaticWebsites.NamedSiteEvent @@ -727,7 +727,7 @@ fun InnerNoteWithReactions( if (!makeItShort) { val noteEvent = baseNote.event - val zapSplits = remember(noteEvent) { noteEvent?.hasZapSplitSetup() ?: false } + val zapSplits = remember(noteEvent) { noteEvent?.hasZapSplitSetupBesidesAuthor() ?: false } if (zapSplits && noteEvent != null) { Spacer(modifier = HalfDoubleVertSpacer) DisplayZapSplits(noteEvent, false, accountViewModel, nav) @@ -851,7 +851,7 @@ fun NoteBody( if (!makeItShort) { val noteEvent = baseNote.event - val zapSplits = remember(noteEvent) { noteEvent?.hasZapSplitSetup() ?: false } + val zapSplits = remember(noteEvent) { noteEvent?.hasZapSplitSetupBesidesAuthor() ?: false } if (zapSplits && noteEvent != null) { Spacer(modifier = HalfDoubleVertSpacer) DisplayZapSplits(noteEvent, false, accountViewModel, nav) @@ -1502,7 +1502,7 @@ fun RenderDraft( nav = nav, ) - val zapSplits = remember(it.event) { it.event?.hasZapSplitSetup() } + val zapSplits = remember(it.event) { it.event?.hasZapSplitSetupBesidesAuthor() } if (zapSplits == true) { Spacer(modifier = HalfDoubleVertSpacer) DisplayZapSplits(it.event!!, false, accountViewModel, nav) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip57Zaps/splits/EventExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip57Zaps/splits/EventExt.kt index 59c3f6de39..8ba83fddab 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip57Zaps/splits/EventExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip57Zaps/splits/EventExt.kt @@ -25,3 +25,13 @@ import com.vitorpamplona.quartz.nip01Core.core.Event fun Event.hasZapSplitSetup() = tags.hasZapSplitSetup() fun Event.zapSplitSetup(): List = tags.zapSplitSetup() + +fun Event.hasZapSplitSetupBesidesAuthor(): Boolean { + val list = zapSplitSetup() + if (list.isEmpty()) return false + if (list.size == 1) { + val only = list.first() + if (only is ZapSplitSetup && only.pubKeyHex == pubKey) return false + } + return true +}