filtered deleted messages from search and chat view, refactored chat bubble styling for deleted comments, and updated tests
This commit is contained in:
@@ -178,6 +178,7 @@ class _ChatViewState extends State<ChatView> {
|
||||
|
||||
if (element.systemMessage.contains('reaction')) continue;
|
||||
if (element.systemMessage.contains('poll_voted')) continue;
|
||||
if (element.systemMessage.contains('message_deleted')) continue;
|
||||
final commonRead = int.parse(
|
||||
response.headers?['x-chat-last-common-read'] ?? '0',
|
||||
);
|
||||
@@ -209,7 +210,10 @@ class _ChatViewState extends State<ChatView> {
|
||||
context: context,
|
||||
isSender:
|
||||
element.actorId == widget.selfId &&
|
||||
element.messageType == GetRoomResponseObjectMessageType.comment,
|
||||
(element.messageType ==
|
||||
GetRoomResponseObjectMessageType.comment ||
|
||||
element.messageType ==
|
||||
GetRoomResponseObjectMessageType.deletedComment),
|
||||
bubbleData: element,
|
||||
chatData: widget.room,
|
||||
refetch: ({bool renew = false}) => _refresh(),
|
||||
|
||||
@@ -21,6 +21,7 @@ class ChatSearchController {
|
||||
for (final element in response.sortByTimestamp()) {
|
||||
if (element.systemMessage.contains('reaction')) continue;
|
||||
if (element.systemMessage.contains('poll_voted')) continue;
|
||||
if (element.systemMessage.contains('message_deleted')) continue;
|
||||
|
||||
final haystackText = RichObjectStringProcessor.parseToString(
|
||||
element.message,
|
||||
|
||||
@@ -148,11 +148,33 @@ class _ChatBubbleState extends State<ChatBubble>
|
||||
).asDialog(context);
|
||||
}
|
||||
|
||||
bool get _rendersAsCommentBubble =>
|
||||
widget.bubbleData.messageType ==
|
||||
GetRoomResponseObjectMessageType.comment ||
|
||||
widget.bubbleData.messageType ==
|
||||
GetRoomResponseObjectMessageType.deletedComment;
|
||||
|
||||
TextStyle? _messageTextStyle(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
switch (widget.bubbleData.messageType) {
|
||||
case GetRoomResponseObjectMessageType.system:
|
||||
return theme.textTheme.bodySmall;
|
||||
case GetRoomResponseObjectMessageType.deletedComment:
|
||||
return theme.textTheme.bodyMedium?.copyWith(
|
||||
color: theme.hintColor,
|
||||
fontStyle: FontStyle.italic,
|
||||
);
|
||||
case GetRoomResponseObjectMessageType.comment:
|
||||
case GetRoomResponseObjectMessageType.voiceMessage:
|
||||
case GetRoomResponseObjectMessageType.command:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
BubbleStyle _getStyle() {
|
||||
final styles = ChatBubbleStyles(context);
|
||||
final BubbleStyle base;
|
||||
if (widget.bubbleData.messageType !=
|
||||
GetRoomResponseObjectMessageType.comment) {
|
||||
if (!_rendersAsCommentBubble) {
|
||||
base = styles.getSystemStyle();
|
||||
} else {
|
||||
base = widget.isSender
|
||||
@@ -210,14 +232,11 @@ class _ChatBubbleState extends State<ChatBubble>
|
||||
originalData: widget.bubbleData.messageParameters,
|
||||
);
|
||||
final showActorDisplayName =
|
||||
widget.bubbleData.messageType ==
|
||||
GetRoomResponseObjectMessageType.comment &&
|
||||
_rendersAsCommentBubble &&
|
||||
widget.chatData.type != GetRoomResponseObjectConversationType.oneToOne;
|
||||
final showBubbleTime =
|
||||
widget.bubbleData.messageType !=
|
||||
GetRoomResponseObjectMessageType.system &&
|
||||
widget.bubbleData.messageType !=
|
||||
GetRoomResponseObjectMessageType.deletedComment;
|
||||
GetRoomResponseObjectMessageType.system;
|
||||
|
||||
final parent = widget.bubbleData.parent;
|
||||
final actorBaseStyle = TextStyle(
|
||||
@@ -294,11 +313,7 @@ class _ChatBubbleState extends State<ChatBubble>
|
||||
timeText: timeText,
|
||||
messageWidget: message.getWidget(
|
||||
highlightQuery: widget.highlightQuery,
|
||||
style:
|
||||
widget.bubbleData.messageType ==
|
||||
GetRoomResponseObjectMessageType.system
|
||||
? Theme.of(context).textTheme.bodySmall
|
||||
: null,
|
||||
style: _messageTextStyle(context),
|
||||
),
|
||||
parent: parent,
|
||||
bubbleData: widget.bubbleData,
|
||||
|
||||
Reference in New Issue
Block a user