chore: migrate and update tests.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
+2
-2
@@ -36,7 +36,7 @@ class StreamAttachmentUploadStateBuilder extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (message.status == MessageSendingStatus.sent) {
|
||||
if (message.state.isCompleted) {
|
||||
return const Offstage();
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ class _FailedState extends StatelessWidget {
|
||||
horizontal: 12,
|
||||
),
|
||||
child: Text(
|
||||
context.translations.uploadErrorLabel,
|
||||
error ?? 'Failed to upload file',
|
||||
style: theme.textTheme.footnote.copyWith(
|
||||
color: theme.colorTheme.barsBg,
|
||||
),
|
||||
|
||||
@@ -236,7 +236,7 @@ class _Trailing extends StatelessWidget {
|
||||
final channel = StreamChannel.of(context).channel;
|
||||
final attachmentId = attachment.id;
|
||||
|
||||
if (message.status == MessageSendingStatus.sent) {
|
||||
if (message.state.isCompleted) {
|
||||
return IconButton(
|
||||
icon: StreamSvgIcon.cloudDownload(
|
||||
color: theme.colorTheme.textHighEmphasis,
|
||||
|
||||
@@ -30,14 +30,13 @@ class StreamSendingIndicator extends StatelessWidget {
|
||||
color: StreamChatTheme.of(context).colorTheme.accentPrimary,
|
||||
);
|
||||
}
|
||||
if (message.status == MessageSendingStatus.sent) {
|
||||
if (message.state.isCompleted) {
|
||||
return StreamSvgIcon.check(
|
||||
size: size,
|
||||
color: StreamChatTheme.of(context).colorTheme.textLowEmphasis,
|
||||
);
|
||||
}
|
||||
if (message.status == MessageSendingStatus.sending ||
|
||||
message.status == MessageSendingStatus.updating) {
|
||||
if (message.state.isOutgoing) {
|
||||
return Icon(
|
||||
Icons.access_time,
|
||||
size: size,
|
||||
|
||||
+7
-20
@@ -19,7 +19,6 @@ class MessageActionsModal extends StatefulWidget {
|
||||
this.showDeleteMessage = true,
|
||||
this.showEditMessage = true,
|
||||
this.onReplyTap,
|
||||
this.onConfirmDeleteTap,
|
||||
this.onThreadReplyTap,
|
||||
this.showCopyMessage = true,
|
||||
this.showReplyMessage = true,
|
||||
@@ -45,9 +44,6 @@ class MessageActionsModal extends StatefulWidget {
|
||||
/// The action to perform when "reply" is tapped
|
||||
final OnMessageTap? onReplyTap;
|
||||
|
||||
/// The action to perform when delete confirmation button is tapped.
|
||||
final Future<void> Function(Message)? onConfirmDeleteTap;
|
||||
|
||||
/// Message in focus for actions
|
||||
final Message message;
|
||||
|
||||
@@ -98,9 +94,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
|
||||
bool _showActions = true;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => _showMessageOptionsModal();
|
||||
|
||||
Widget _showMessageOptionsModal() {
|
||||
Widget build(BuildContext context) {
|
||||
final mediaQueryData = MediaQuery.of(context);
|
||||
final user = StreamChat.of(context).currentUser;
|
||||
final orientation = mediaQueryData.orientation;
|
||||
@@ -119,8 +113,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
|
||||
? CrossAxisAlignment.end
|
||||
: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
if (widget.showReactions &&
|
||||
(widget.message.status == MessageSendingStatus.sent))
|
||||
if (widget.showReactions && widget.message.state.isCompleted)
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
return Align(
|
||||
@@ -161,7 +154,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
if (widget.showReplyMessage &&
|
||||
widget.message.status == MessageSendingStatus.sent)
|
||||
widget.message.state.isCompleted)
|
||||
ReplyButton(
|
||||
onTap: () {
|
||||
Navigator.of(context).pop();
|
||||
@@ -171,8 +164,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
|
||||
},
|
||||
),
|
||||
if (widget.showThreadReplyMessage &&
|
||||
(widget.message.status ==
|
||||
MessageSendingStatus.sent) &&
|
||||
(widget.message.state.isCompleted) &&
|
||||
widget.message.parentId == null)
|
||||
ThreadReplyButton(
|
||||
message: widget.message,
|
||||
@@ -208,8 +200,8 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
|
||||
),
|
||||
if (widget.showDeleteMessage)
|
||||
DeleteMessageButton(
|
||||
isDeleteFailed: widget.message.status ==
|
||||
MessageSendingStatus.failed_delete,
|
||||
isDeleteFailed:
|
||||
widget.message.state.isDeletingFailed,
|
||||
onTap: _showDeleteBottomSheet,
|
||||
),
|
||||
...widget.customActions
|
||||
@@ -367,12 +359,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
|
||||
if (answer == true) {
|
||||
try {
|
||||
Navigator.of(context).pop();
|
||||
final onConfirmDeleteTap = widget.onConfirmDeleteTap;
|
||||
if (onConfirmDeleteTap != null) {
|
||||
await onConfirmDeleteTap(widget.message);
|
||||
} else {
|
||||
await StreamChannel.of(context).channel.deleteMessage(widget.message);
|
||||
}
|
||||
await StreamChannel.of(context).channel.deleteMessage(widget.message);
|
||||
} catch (err) {
|
||||
_showErrorAlertBottomSheet();
|
||||
}
|
||||
|
||||
+7
-6
@@ -22,16 +22,17 @@ class ResendMessageButton extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final isUpdateFailed = message.status == MessageSendingStatus.failed_update;
|
||||
final isUpdateFailed = message.state.isUpdatingFailed;
|
||||
final streamChatThemeData = StreamChatTheme.of(context);
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
Navigator.of(context).pop();
|
||||
if (isUpdateFailed) {
|
||||
channel.updateMessage(message);
|
||||
} else {
|
||||
channel.sendMessage(message);
|
||||
}
|
||||
message.state.whenOrNull(failed: (state, error) {
|
||||
state.whenOrNull(
|
||||
sendingFailed: () => channel.sendMessage(message),
|
||||
updatingFailed: () => channel.updateMessage(message),
|
||||
);
|
||||
});
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 11, horizontal: 16),
|
||||
|
||||
@@ -129,7 +129,6 @@ class StreamMessageInput extends StatefulWidget {
|
||||
this.customAutocompleteTriggers = const [],
|
||||
this.mentionAllAppUsers = false,
|
||||
this.sendButtonBuilder,
|
||||
this.quotedMessageBuilder,
|
||||
this.shouldKeepFocusAfterMessage,
|
||||
this.validator = _defaultValidator,
|
||||
this.restorationId,
|
||||
@@ -267,9 +266,6 @@ class StreamMessageInput extends StatefulWidget {
|
||||
/// Builder for creating send button
|
||||
final MessageRelatedBuilder? sendButtonBuilder;
|
||||
|
||||
/// Builder for building quoted message
|
||||
final Widget Function(BuildContext, Message)? quotedMessageBuilder;
|
||||
|
||||
/// Defines if the [StreamMessageInput] loses focuses after a message is sent.
|
||||
/// The default behaviour keeps focus until a command is enabled.
|
||||
final bool? shouldKeepFocusAfterMessage;
|
||||
@@ -370,8 +366,8 @@ class StreamMessageInputState extends State<StreamMessageInput>
|
||||
bool get _hasQuotedMessage =>
|
||||
_effectiveController.message.quotedMessage != null;
|
||||
|
||||
bool get _isEditing =>
|
||||
_effectiveController.message.status != MessageSendingStatus.sending;
|
||||
// TODO:
|
||||
bool get _isEditing => _effectiveController.message.state.isCompleted;
|
||||
|
||||
BoxBorder? _draggingBorder;
|
||||
|
||||
@@ -786,6 +782,7 @@ class StreamMessageInputState extends State<StreamMessageInput>
|
||||
Future<void> _onAttachmentButtonPressed() async {
|
||||
final attachments = await showStreamAttachmentPickerModalBottomSheet(
|
||||
context: context,
|
||||
useRootNavigator: true,
|
||||
allowedTypes: widget.allowedAttachmentPickerTypes,
|
||||
initialAttachments: _effectiveController.attachments,
|
||||
);
|
||||
@@ -1135,20 +1132,14 @@ class StreamMessageInputState extends State<StreamMessageInput>
|
||||
if (!_hasQuotedMessage) return const Offstage();
|
||||
final containsUrl = _effectiveController.message.quotedMessage!.attachments
|
||||
.any((element) => element.titleLink != null);
|
||||
|
||||
return widget.quotedMessageBuilder?.call(
|
||||
context,
|
||||
_effectiveController.message.quotedMessage!,
|
||||
) ??
|
||||
StreamQuotedMessageWidget(
|
||||
reverse: true,
|
||||
showBorder: !containsUrl,
|
||||
message: _effectiveController.message.quotedMessage!,
|
||||
messageTheme: _streamChatTheme.otherMessageTheme,
|
||||
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0),
|
||||
onQuotedMessageClear: widget.onQuotedMessageCleared,
|
||||
attachmentThumbnailBuilders: widget.attachmentThumbnailBuilders,
|
||||
);
|
||||
return StreamQuotedMessageWidget(
|
||||
reverse: true,
|
||||
showBorder: !containsUrl,
|
||||
message: _effectiveController.message.quotedMessage!,
|
||||
messageTheme: _streamChatTheme.otherMessageTheme,
|
||||
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0),
|
||||
onQuotedMessageClear: widget.onQuotedMessageCleared,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAttachments() {
|
||||
@@ -1451,10 +1442,12 @@ class StreamMessageInputState extends State<StreamMessageInput>
|
||||
skipEnrichUrl: skipEnrichUrl,
|
||||
);
|
||||
|
||||
if (shouldKeepFocus) {
|
||||
FocusScope.of(context).requestFocus(_effectiveFocusNode);
|
||||
} else {
|
||||
FocusScope.of(context).unfocus();
|
||||
if (mounted) {
|
||||
if (shouldKeepFocus) {
|
||||
FocusScope.of(context).requestFocus(_effectiveFocusNode);
|
||||
} else {
|
||||
FocusScope.of(context).unfocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@ class StreamMessageWidget extends StatefulWidget {
|
||||
this.showInChannelIndicator = false,
|
||||
this.onReplyTap,
|
||||
this.onThreadTap,
|
||||
this.onConfirmDeleteTap,
|
||||
this.showUsername = true,
|
||||
this.showTimestamp = true,
|
||||
this.showReactions = true,
|
||||
@@ -79,7 +78,6 @@ class StreamMessageWidget extends StatefulWidget {
|
||||
this.onMessageActions,
|
||||
this.onShowMessage,
|
||||
this.userAvatarBuilder,
|
||||
this.quotedMessageBuilder,
|
||||
this.editMessageInputBuilder,
|
||||
this.textBuilder,
|
||||
@Deprecated('''
|
||||
@@ -309,11 +307,6 @@ class StreamMessageWidget extends StatefulWidget {
|
||||
/// {@endtemplate}
|
||||
final void Function(Message)? onReplyTap;
|
||||
|
||||
/// {@template onDeleteTap}
|
||||
/// The function called when delete confirmation button is tapped.
|
||||
/// {@endtemplate}
|
||||
final Future<void> Function(Message)? onConfirmDeleteTap;
|
||||
|
||||
/// {@template editMessageInputBuilder}
|
||||
/// Widget builder for edit message layout
|
||||
/// {@endtemplate}
|
||||
@@ -355,11 +348,6 @@ class StreamMessageWidget extends StatefulWidget {
|
||||
/// {@endtemplate}
|
||||
final Widget Function(BuildContext, User)? userAvatarBuilder;
|
||||
|
||||
/// {@template quotedMessageBuilder}
|
||||
/// Widget builder for building quoted message
|
||||
/// {@endtemplate}
|
||||
final Widget Function(BuildContext, Message)? quotedMessageBuilder;
|
||||
|
||||
/// {@template message}
|
||||
/// The message to display.
|
||||
/// {@endtemplate}
|
||||
@@ -580,10 +568,8 @@ class StreamMessageWidget extends StatefulWidget {
|
||||
void Function(User)? onMentionTap,
|
||||
void Function(Message)? onThreadTap,
|
||||
void Function(Message)? onReplyTap,
|
||||
Future<void> Function(Message)? onConfirmDeleteTap,
|
||||
Widget Function(BuildContext, Message)? editMessageInputBuilder,
|
||||
Widget Function(BuildContext, Message)? textBuilder,
|
||||
Widget Function(BuildContext, Message)? quotedMessageBuilder,
|
||||
@Deprecated('''
|
||||
Use [bottomRowBuilderWithDefaultWidget] instead.
|
||||
Will be removed in the next major version.
|
||||
@@ -673,11 +659,9 @@ class StreamMessageWidget extends StatefulWidget {
|
||||
onMentionTap: onMentionTap ?? this.onMentionTap,
|
||||
onThreadTap: onThreadTap ?? this.onThreadTap,
|
||||
onReplyTap: onReplyTap ?? this.onReplyTap,
|
||||
onConfirmDeleteTap: onConfirmDeleteTap ?? this.onConfirmDeleteTap,
|
||||
editMessageInputBuilder:
|
||||
editMessageInputBuilder ?? this.editMessageInputBuilder,
|
||||
textBuilder: textBuilder ?? this.textBuilder,
|
||||
quotedMessageBuilder: quotedMessageBuilder ?? this.quotedMessageBuilder,
|
||||
bottomRowBuilderWithDefaultWidget: _bottomRowBuilderWithDefaultWidget,
|
||||
onMessageActions: onMessageActions ?? this.onMessageActions,
|
||||
message: message ?? this.message,
|
||||
@@ -760,13 +744,11 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
||||
/// {@endtemplate}
|
||||
bool get hasQuotedMessage => widget.message.quotedMessage != null;
|
||||
|
||||
bool get isSendFailed => widget.message.status == MessageSendingStatus.failed;
|
||||
bool get isSendFailed => widget.message.state.isSendingFailed;
|
||||
|
||||
bool get isUpdateFailed =>
|
||||
widget.message.status == MessageSendingStatus.failed_update;
|
||||
bool get isUpdateFailed => widget.message.state.isUpdatingFailed;
|
||||
|
||||
bool get isDeleteFailed =>
|
||||
widget.message.status == MessageSendingStatus.failed_delete;
|
||||
bool get isDeleteFailed => widget.message.state.isDeletingFailed;
|
||||
|
||||
/// {@template isFailedState}
|
||||
/// Whether the message has failed to be sent, updated, or deleted.
|
||||
@@ -973,7 +955,6 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
||||
borderSide: widget.borderSide,
|
||||
borderRadiusGeometry: widget.borderRadiusGeometry,
|
||||
textBuilder: widget.textBuilder,
|
||||
quotedMessageBuilder: widget.quotedMessageBuilder,
|
||||
onLinkTap: widget.onLinkTap,
|
||||
onMentionTap: widget.onMentionTap,
|
||||
onQuotedMessageTap: widget.onQuotedMessageTap,
|
||||
@@ -1090,14 +1071,12 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
||||
leading: StreamSvgIcon.iconSendMessage(),
|
||||
title: Text(
|
||||
context.translations.toggleResendOrResendEditedMessage(
|
||||
isUpdateFailed:
|
||||
widget.message.status == MessageSendingStatus.failed,
|
||||
isUpdateFailed: widget.message.state.isUpdatingFailed,
|
||||
),
|
||||
),
|
||||
onClick: () {
|
||||
Navigator.of(context, rootNavigator: true).pop();
|
||||
final isUpdateFailed =
|
||||
widget.message.status == MessageSendingStatus.failed_update;
|
||||
final isUpdateFailed = widget.message.state.isUpdatingFailed;
|
||||
final channel = StreamChannel.of(context).channel;
|
||||
if (isUpdateFailed) {
|
||||
channel.updateMessage(widget.message);
|
||||
@@ -1115,21 +1094,16 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
||||
),
|
||||
onClick: () async {
|
||||
Navigator.of(context, rootNavigator: true).pop();
|
||||
final deleted = await showDialog<bool?>(
|
||||
final deleted = await showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (_) => const DeleteMessageDialog(),
|
||||
);
|
||||
if (deleted == true) {
|
||||
if (deleted) {
|
||||
try {
|
||||
final onConfirmDeleteTap = widget.onConfirmDeleteTap;
|
||||
if (onConfirmDeleteTap != null) {
|
||||
await onConfirmDeleteTap(widget.message);
|
||||
} else {
|
||||
await StreamChannel.of(context)
|
||||
.channel
|
||||
.deleteMessage(widget.message);
|
||||
}
|
||||
await StreamChannel.of(context)
|
||||
.channel
|
||||
.deleteMessage(widget.message);
|
||||
} catch (e) {
|
||||
showDialog(
|
||||
context: context,
|
||||
@@ -1150,8 +1124,7 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
||||
}
|
||||
|
||||
void onLongPress(BuildContext context) {
|
||||
if (widget.message.isEphemeral ||
|
||||
widget.message.status == MessageSendingStatus.sending) {
|
||||
if (widget.message.isEphemeral || widget.message.state.isOutgoing) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1187,8 +1160,8 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
||||
translateUserAvatar: false,
|
||||
showSendingIndicator: false,
|
||||
padding: EdgeInsets.zero,
|
||||
showReactionPickerIndicator: widget.showReactions &&
|
||||
(widget.message.status == MessageSendingStatus.sent),
|
||||
showReactionPickerIndicator:
|
||||
widget.showReactions && widget.message.state.isCompleted,
|
||||
showPinHighlight: false,
|
||||
showUserAvatar:
|
||||
widget.message.user!.id == channel.client.state.currentUser!.id
|
||||
|
||||
@@ -63,7 +63,6 @@ class MessageWidgetContent extends StatelessWidget {
|
||||
this.onMentionTap,
|
||||
this.onLinkTap,
|
||||
this.textBuilder,
|
||||
this.quotedMessageBuilder,
|
||||
@Deprecated('''
|
||||
Use [bottomRowBuilderWithDefaultWidget] instead.
|
||||
Will be removed in the next major version.
|
||||
@@ -171,9 +170,6 @@ class MessageWidgetContent extends StatelessWidget {
|
||||
/// {@macro textBuilder}
|
||||
final Widget Function(BuildContext, Message)? textBuilder;
|
||||
|
||||
/// {@macro quotedMessageBuilder}
|
||||
final Widget Function(BuildContext, Message)? quotedMessageBuilder;
|
||||
|
||||
/// {@macro showReactionPickerIndicator}
|
||||
final bool showReactionPickerIndicator;
|
||||
|
||||
@@ -355,8 +351,6 @@ class MessageWidgetContent extends StatelessWidget {
|
||||
onMentionTap: onMentionTap,
|
||||
onLinkTap: onLinkTap,
|
||||
textBuilder: textBuilder,
|
||||
quotedMessageBuilder:
|
||||
quotedMessageBuilder,
|
||||
borderRadiusGeometry:
|
||||
borderRadiusGeometry,
|
||||
borderSide: borderSide,
|
||||
@@ -458,7 +452,7 @@ class MessageWidgetContent extends StatelessWidget {
|
||||
showSendingIndicator: false,
|
||||
padding: EdgeInsets.zero,
|
||||
showReactionPickerIndicator:
|
||||
showReactions && (message.status == MessageSendingStatus.sent),
|
||||
showReactions && message.state.isCompleted,
|
||||
showPinHighlight: false,
|
||||
showUserAvatar:
|
||||
message.user!.id == channel.client.state.currentUser!.id
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ class StreamMessageReactionsModal extends StatelessWidget {
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: <Widget>[
|
||||
if ((showReactions ?? hasReactionPermission) &&
|
||||
(message.status == MessageSendingStatus.sent))
|
||||
message.state.isCompleted)
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
return Align(
|
||||
|
||||
+12
-16
@@ -42,25 +42,21 @@ class SendingIndicatorBuilder extends StatelessWidget {
|
||||
final channel = this.channel ?? StreamChannel.of(context).channel;
|
||||
final memberCount = channel.memberCount ?? 0;
|
||||
|
||||
if (hasNonUrlAttachments &&
|
||||
(message.status == MessageSendingStatus.sending ||
|
||||
message.status == MessageSendingStatus.updating)) {
|
||||
if (hasNonUrlAttachments && message.state.isOutgoing) {
|
||||
final totalAttachments = message.attachments.length;
|
||||
final uploadRemaining =
|
||||
message.attachments.where((it) => !it.uploadState.isSuccess).length;
|
||||
if (uploadRemaining == 0) {
|
||||
return StreamSvgIcon.check(
|
||||
size: style!.fontSize,
|
||||
color: IconTheme.of(context).color!.withOpacity(0.5),
|
||||
final attachmentsToUpload = message.attachments.where((it) {
|
||||
return !it.uploadState.isSuccess;
|
||||
});
|
||||
|
||||
if (attachmentsToUpload.isNotEmpty) {
|
||||
return Text(
|
||||
context.translations.attachmentsUploadProgressText(
|
||||
remaining: attachmentsToUpload.length,
|
||||
total: totalAttachments,
|
||||
),
|
||||
style: style,
|
||||
);
|
||||
}
|
||||
return Text(
|
||||
context.translations.attachmentsUploadProgressText(
|
||||
remaining: uploadRemaining,
|
||||
total: totalAttachments,
|
||||
),
|
||||
style: style,
|
||||
);
|
||||
}
|
||||
|
||||
return BetterStreamBuilder<List<Read>>(
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ class StreamChannelListTile extends StatelessWidget {
|
||||
/// The widget builder for the sending indicator.
|
||||
///
|
||||
/// `Message` is the last message in the channel, Use it to determine the
|
||||
/// status using [Message.status].
|
||||
/// status using [Message.state].
|
||||
final Widget Function(BuildContext, Message)? sendingIndicatorBuilder;
|
||||
|
||||
/// True if the tile is in a selected state.
|
||||
|
||||
+5
-5
@@ -40,7 +40,7 @@ void main() {
|
||||
user: User(
|
||||
id: 'user-id',
|
||||
),
|
||||
status: MessageSendingStatus.sent,
|
||||
state: MessageState.sent,
|
||||
),
|
||||
messageWidget: const Text(
|
||||
'test',
|
||||
@@ -211,7 +211,7 @@ void main() {
|
||||
user: User(
|
||||
id: 'user-id',
|
||||
),
|
||||
status: MessageSendingStatus.sent,
|
||||
state: MessageState.sent,
|
||||
),
|
||||
messageTheme: streamTheme.ownMessageTheme,
|
||||
),
|
||||
@@ -262,7 +262,7 @@ void main() {
|
||||
user: User(
|
||||
id: 'user-id',
|
||||
),
|
||||
status: MessageSendingStatus.sent,
|
||||
state: MessageState.sent,
|
||||
),
|
||||
messageTheme: streamTheme.ownMessageTheme,
|
||||
),
|
||||
@@ -460,7 +460,7 @@ void main() {
|
||||
child: MessageActionsModal(
|
||||
messageWidget: const Text('test'),
|
||||
message: Message(
|
||||
status: MessageSendingStatus.failed,
|
||||
state: MessageState.sendingFailed,
|
||||
text: 'test',
|
||||
user: User(
|
||||
id: 'user-id',
|
||||
@@ -510,7 +510,7 @@ void main() {
|
||||
child: MessageActionsModal(
|
||||
messageWidget: const Text('test'),
|
||||
message: Message(
|
||||
status: MessageSendingStatus.failed_update,
|
||||
state: MessageState.updatingFailed,
|
||||
text: 'test',
|
||||
user: User(
|
||||
id: 'user-id',
|
||||
|
||||
Reference in New Issue
Block a user