refactor(ui): refactor stream quouted message.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -129,8 +129,11 @@ class _MessageCardState extends State<MessageCard> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final onQuotedMessageTap = widget.onQuotedMessageTap;
|
||||
|
||||
return Card(
|
||||
elevation: 0,
|
||||
clipBehavior: Clip.hardEdge,
|
||||
margin: EdgeInsets.symmetric(
|
||||
horizontal: (widget.isFailedState ? 15.0 : 0.0) +
|
||||
(widget.showUserAvatar == DisplayWidget.gone ? 0 : 4.0),
|
||||
@@ -150,15 +153,23 @@ class _MessageCardState extends State<MessageCard> {
|
||||
maxWidth: widthLimit ?? double.infinity,
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
if (widget.hasQuotedMessage)
|
||||
QuotedMessage(
|
||||
reverse: widget.reverse,
|
||||
message: widget.message,
|
||||
hasNonUrlAttachments: widget.hasNonUrlAttachments,
|
||||
onQuotedMessageTap: widget.onQuotedMessageTap,
|
||||
MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
child: InkWell(
|
||||
onTap: !widget.message.quotedMessage!.isDeleted &&
|
||||
onQuotedMessageTap != null
|
||||
? () => onQuotedMessageTap(widget.message.quotedMessageId)
|
||||
: null,
|
||||
child: QuotedMessage(
|
||||
reverse: widget.reverse,
|
||||
message: widget.message,
|
||||
hasNonUrlAttachments: widget.hasNonUrlAttachments,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (widget.hasNonUrlAttachments)
|
||||
ParseAttachments(
|
||||
|
||||
@@ -7,63 +7,41 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||
///
|
||||
/// Used in [QuotedMessageCard]. Should not be used elsewhere.
|
||||
/// {@endtemplate}
|
||||
class QuotedMessage extends StatefulWidget {
|
||||
class QuotedMessage extends StatelessWidget {
|
||||
/// {@macro quotedMessage}
|
||||
const QuotedMessage({
|
||||
super.key,
|
||||
required this.message,
|
||||
required this.reverse,
|
||||
required this.hasNonUrlAttachments,
|
||||
this.onQuotedMessageTap,
|
||||
});
|
||||
|
||||
/// {@macro message}
|
||||
final Message message;
|
||||
|
||||
/// {@macro onQuotedMessageTap}
|
||||
final OnQuotedMessageTap? onQuotedMessageTap;
|
||||
|
||||
/// {@macro reverse}
|
||||
final bool reverse;
|
||||
|
||||
/// {@macro hasNonUrlAttachments}
|
||||
final bool hasNonUrlAttachments;
|
||||
|
||||
@override
|
||||
State<QuotedMessage> createState() => _QuotedMessageState();
|
||||
}
|
||||
|
||||
class _QuotedMessageState extends State<QuotedMessage> {
|
||||
late StreamChatState _streamChat;
|
||||
late StreamChatThemeData _streamChatTheme;
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
_streamChatTheme = StreamChatTheme.of(context);
|
||||
_streamChat = StreamChat.of(context);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final isMyMessage = widget.message.user?.id == _streamChat.currentUser?.id;
|
||||
final onTap = widget.message.quotedMessage?.isDeleted != true &&
|
||||
widget.onQuotedMessageTap != null
|
||||
? () => widget.onQuotedMessageTap!(widget.message.quotedMessageId)
|
||||
: null;
|
||||
final chatThemeData = _streamChatTheme;
|
||||
final streamChat = StreamChat.of(context);
|
||||
final chatThemeData = StreamChatTheme.of(context);
|
||||
|
||||
final isMyMessage = message.user?.id == streamChat.currentUser?.id;
|
||||
return StreamQuotedMessageWidget(
|
||||
onTap: onTap,
|
||||
message: widget.message.quotedMessage!,
|
||||
message: message.quotedMessage!,
|
||||
messageTheme: isMyMessage
|
||||
? chatThemeData.otherMessageTheme
|
||||
: chatThemeData.ownMessageTheme,
|
||||
reverse: widget.reverse,
|
||||
reverse: reverse,
|
||||
padding: EdgeInsets.only(
|
||||
right: 8,
|
||||
left: 8,
|
||||
top: 8,
|
||||
bottom: widget.hasNonUrlAttachments ? 8 : 0,
|
||||
bottom: hasNonUrlAttachments ? 8 : 0,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user