From 7c1053df2dd779180dddf87eea060d6f3a6f6f62 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 13 Jan 2026 14:37:32 -0500 Subject: [PATCH] Moves reports to common Adds support for additional information --- .../java/com/vitorpamplona/amethyst/model/Account.kt | 5 +++-- .../amethyst/ui/screen/loggedIn/AccountViewModel.kt | 3 ++- .../commons}/model/nip56Reports/ReportAction.kt | 11 ++++++----- .../vitorpamplona/quartz/nip56Reports/ReportEvent.kt | 6 ++++-- 4 files changed, 15 insertions(+), 10 deletions(-) rename {amethyst/src/main/java/com/vitorpamplona/amethyst => commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons}/model/nip56Reports/ReportAction.kt (88%) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 16575da67..aff2f7ea1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -33,6 +33,7 @@ import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChann import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatListDecryptionCache import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatListState import com.vitorpamplona.amethyst.commons.model.nip38UserStatuses.UserStatusAction +import com.vitorpamplona.amethyst.commons.model.nip56Reports.ReportAction import com.vitorpamplona.amethyst.commons.richtext.RichTextParser import com.vitorpamplona.amethyst.logTime import com.vitorpamplona.amethyst.model.edits.PrivateStorageRelayListDecryptionCache @@ -77,7 +78,6 @@ import com.vitorpamplona.amethyst.model.nip51Lists.searchRelays.SearchRelayListD import com.vitorpamplona.amethyst.model.nip51Lists.searchRelays.SearchRelayListState import com.vitorpamplona.amethyst.model.nip51Lists.trustedRelays.TrustedRelayListDecryptionCache import com.vitorpamplona.amethyst.model.nip51Lists.trustedRelays.TrustedRelayListState -import com.vitorpamplona.amethyst.model.nip56Reports.ReportAction import com.vitorpamplona.amethyst.model.nip65RelayList.Nip65RelayListState import com.vitorpamplona.amethyst.model.nip72Communities.CommunityListDecryptionCache import com.vitorpamplona.amethyst.model.nip72Communities.CommunityListState @@ -571,7 +571,8 @@ class Account( suspend fun report( user: User, type: ReportType, - ) = sendMyPublicAndPrivateOutbox(ReportAction.report(user, type, userProfile(), signer)) + content: String = "", + ) = sendMyPublicAndPrivateOutbox(ReportAction.report(user, type, content, userProfile(), signer)) suspend fun delete(note: Note) = delete(listOf(note)) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt index fcfa5b4d6..fffbe41a2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt @@ -701,9 +701,10 @@ class AccountViewModel( fun report( user: User, type: ReportType, + content: String = "", ) { launchSigner { - account.report(user, type) + account.report(user, type, content) account.hideUser(user.pubkeyHex) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip56Reports/ReportAction.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/model/nip56Reports/ReportAction.kt similarity index 88% rename from amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip56Reports/ReportAction.kt rename to commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/model/nip56Reports/ReportAction.kt index 1dfc00f11..ffd1c21c5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip56Reports/ReportAction.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/model/nip56Reports/ReportAction.kt @@ -18,10 +18,10 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.amethyst.model.nip56Reports +package com.vitorpamplona.amethyst.commons.model.nip56Reports -import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.model.User +import com.vitorpamplona.amethyst.commons.model.Note +import com.vitorpamplona.amethyst.commons.model.User import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner import com.vitorpamplona.quartz.nip56Reports.ReportEvent import com.vitorpamplona.quartz.nip56Reports.ReportType @@ -31,6 +31,7 @@ class ReportAction { suspend fun report( user: User, type: ReportType, + content: String = "", by: User, signer: NostrSigner, ): ReportEvent? { @@ -39,7 +40,7 @@ class ReportAction { return null } - val template = ReportEvent.build(user.pubkeyHex, type) + val template = ReportEvent.build(user.pubkeyHex, type, content) return signer.sign(template) } @@ -57,7 +58,7 @@ class ReportAction { } return note.event?.let { - signer.sign(ReportEvent.build(it, type)) + signer.sign(ReportEvent.build(it, type, content)) } } } diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt index f1f601c64..7a72281ff 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip56Reports/ReportEvent.kt @@ -77,8 +77,9 @@ class ReportEvent( fun build( reportedPost: Event, type: ReportType, + comment: String = "", createdAt: Long = TimeUtils.now(), - ) = eventTemplate(KIND, "", createdAt) { + ) = eventTemplate(KIND, comment, createdAt) { alt(ALT_PREFIX + type.code) event(reportedPost.id, type) user(reportedPost.pubKey, type) @@ -91,8 +92,9 @@ class ReportEvent( fun build( reportedUser: HexKey, type: ReportType, + comment: String = "", createdAt: Long = TimeUtils.now(), - ) = eventTemplate(KIND, "", createdAt) { + ) = eventTemplate(KIND, comment, createdAt) { alt(ALT_PREFIX + type.code) user(reportedUser, type) }