@@ -443,6 +443,7 @@ class DefaultStreamMessage extends StatelessWidget {
443443 context,
444444 isPinned: message.pinned,
445445 isEdited: message.messageTextUpdatedAt != null ,
446+ isBouncedWithError: message.isBouncedWithError,
446447 state: message.state,
447448 );
448449
@@ -453,6 +454,7 @@ class DefaultStreamMessage extends StatelessWidget {
453454 final effectiveBackgroundColor = props.backgroundColor ?? theme.backgroundColor ?? defaults.backgroundColor;
454455 final effectiveAvatarVisibility = resolve ((theme) => theme? .avatarVisibility);
455456 final effectiveAnnotationVisibility = resolve ((theme) => theme? .annotationVisibility);
457+ final effectiveErrorBadgeVisibility = resolve ((theme) => theme? .errorBadgeVisibility);
456458 final effectiveMetadataVisibility = resolve ((theme) => theme? .metadataVisibility);
457459 final effectiveRepliesVisibility = resolve ((theme) => theme? .repliesVisibility);
458460
@@ -468,16 +470,13 @@ class DefaultStreamMessage extends StatelessWidget {
468470 );
469471 }
470472
471- final listKind = StreamMessageLayout .listKindOf (context);
472- final onViewTap = switch ((listKind, props.onViewInChannelTap)) {
473- (.thread, final onTap? ) => () => onTap (message),
474- _ => () => _onViewThread (context, message),
475- };
476-
477473 final annotationWidget = effectiveAnnotationVisibility.apply (
478474 StreamMessageAnnotations (
479475 message: message,
480- onViewChannelTap: onViewTap,
476+ onViewChannelTap: switch (props.onViewInChannelTap) {
477+ final onTap? => () => onTap (message),
478+ _ => () => _onViewThread (context, message),
479+ },
481480 ),
482481 );
483482
@@ -500,9 +499,14 @@ class DefaultStreamMessage extends StatelessWidget {
500499 );
501500 }
502501
502+ final errorBadgeWidget = effectiveErrorBadgeVisibility.apply (
503+ core.StreamErrorBadge (size: core.StreamErrorBadgeSize .sm),
504+ );
505+
503506 final contentWidget = StreamMessageContent (
504507 message: message,
505508 annotation: annotationWidget,
509+ errorBadge: errorBadgeWidget,
506510 metadata: metadataWidget,
507511 replies: repliesWidget,
508512 attachmentBuilders: props.attachmentBuilders,
@@ -1045,11 +1049,13 @@ class _StreamMessageWidgetDefaults extends core.StreamMessageItemThemeData {
10451049 this ._context, {
10461050 this .isPinned = false ,
10471051 this .isEdited = false ,
1052+ this .isBouncedWithError = false ,
10481053 required MessageState state,
10491054 }) : _messageState = state;
10501055
10511056 final bool isPinned;
10521057 final bool isEdited;
1058+ final bool isBouncedWithError;
10531059
10541060 final BuildContext _context;
10551061 final MessageState _messageState;
@@ -1084,6 +1090,11 @@ class _StreamMessageWidgetDefaults extends core.StreamMessageItemThemeData {
10841090 @override
10851091 core.StreamMessageLayoutVisibility get annotationVisibility => .all (.visible);
10861092
1093+ @override
1094+ core.StreamMessageLayoutVisibility get errorBadgeVisibility => .all (
1095+ _messageState.isFailed || isBouncedWithError ? .visible : .gone,
1096+ );
1097+
10871098 @override
10881099 core.StreamMessageLayoutVisibility get metadataVisibility {
10891100 if (isEdited) return .all (.visible);
0 commit comments