From 6b8ee46b5c6c6fe67b098d02289b8329865261f3 Mon Sep 17 00:00:00 2001 From: Roscoe Rubin-Rottenberg Date: Tue, 18 Aug 2026 21:06:08 -0400 Subject: [PATCH] fix: show moderator handle in label details --- .../core/moderation/moderated_content.dart | 8 +-- .../core/moderation/moderation_engine.dart | 7 ++- .../core/moderation/moderation_models.dart | 2 + .../core/moderation/moderation_provider.dart | 3 ++ .../moderation/moderated_content_test.dart | 26 ++++++++++ .../moderation/moderation_provider_test.dart | 50 +++++++++++++++++++ 6 files changed, 91 insertions(+), 5 deletions(-) diff --git a/lib/src/core/moderation/moderated_content.dart b/lib/src/core/moderation/moderated_content.dart index 404c5d16..e0f399c4 100644 --- a/lib/src/core/moderation/moderated_content.dart +++ b/lib/src/core/moderation/moderated_content.dart @@ -443,6 +443,10 @@ class _ModerationDetailsState extends State<_ModerationDetails> { Builder( builder: (context) { final strings = cause.localizedStrings(l10n); + final source = switch (cause.sourceHandle) { + final handle? => '@$handle', + null => cause.sourceDid, + }; return Card( child: Padding( padding: const EdgeInsets.all(16), @@ -458,9 +462,7 @@ class _ModerationDetailsState extends State<_ModerationDetails> { Text(description), ], const SizedBox(height: 8), - SelectableText( - '${l10n.moderationAppliedBy}: ${cause.sourceDid}', - ), + SelectableText('${l10n.moderationAppliedBy}: $source'), if (cause.label.exp case final expires?) Text( '${l10n.moderationExpires}: ${expires.toLocal()}', diff --git a/lib/src/core/moderation/moderation_engine.dart b/lib/src/core/moderation/moderation_engine.dart index b18715d9..0530dd69 100644 --- a/lib/src/core/moderation/moderation_engine.dart +++ b/lib/src/core/moderation/moderation_engine.dart @@ -3,17 +3,19 @@ import 'package:spark/src/core/moderation/moderation_definitions.dart'; import 'package:spark/src/core/moderation/moderation_models.dart'; final class ModerationEngine { - const ModerationEngine({ + ModerationEngine({ required this.definitions, required this.preferences, this.currentUserDid, this.selfLabelerDid, - }); + Map labelerHandles = const {}, + }) : _labelerHandles = Map.unmodifiable(labelerHandles); final ModerationLabelDefinitions definitions; final ModerationPreferences preferences; final String? currentUserDid; final String? selfLabelerDid; + final Map _labelerHandles; ModerationDecision evaluate( Iterable