From 8424e3a9721caec56c448667e4f0f24f841e7d8e Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 29 Oct 2020 12:33:18 +0100 Subject: [PATCH] center user avatar in modal --- lib/src/message_actions_modal.dart | 8 ++++---- lib/src/message_reactions_modal.dart | 8 ++++---- lib/src/message_widget.dart | 18 +++++++++++++++++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/lib/src/message_actions_modal.dart b/lib/src/message_actions_modal.dart index 9144de1e..b675a688 100644 --- a/lib/src/message_actions_modal.dart +++ b/lib/src/message_actions_modal.dart @@ -25,6 +25,7 @@ class MessageActionsModal extends StatelessWidget { final bool showReply; final bool reverse; final ShapeBorder messageShape; + final DisplayWidget showUserAvatar; const MessageActionsModal({ Key key, @@ -36,6 +37,7 @@ class MessageActionsModal extends StatelessWidget { this.onThreadTap, this.showCopyMessage = true, this.showReply = true, + this.showUserAvatar = DisplayWidget.show, this.editMessageInputBuilder, this.messageShape, this.reverse = false, @@ -43,7 +45,6 @@ class MessageActionsModal extends StatelessWidget { @override Widget build(BuildContext context) { - final ownId = StreamChat.of(context).user.id; return GestureDetector( behavior: HitTestBehavior.translucent, onTap: () { @@ -92,10 +93,9 @@ class MessageActionsModal extends StatelessWidget { showReactions: false, showUsername: false, showReplyIndicator: false, - showUserAvatar: message.user.id == ownId - ? DisplayWidget.gone - : DisplayWidget.show, + showUserAvatar: showUserAvatar, showTimestamp: false, + translateUserAvatar: false, showSendingIndicator: DisplayWidget.gone, shape: messageShape, ), diff --git a/lib/src/message_reactions_modal.dart b/lib/src/message_reactions_modal.dart index 88e2525d..a8013fde 100644 --- a/lib/src/message_reactions_modal.dart +++ b/lib/src/message_reactions_modal.dart @@ -17,6 +17,7 @@ class MessageReactionsModal extends StatelessWidget { final MessageTheme messageTheme; final bool reverse; final bool showReactions; + final DisplayWidget showUserAvatar; final ShapeBorder messageShape; final void Function(User) onUserAvatarTap; @@ -29,12 +30,12 @@ class MessageReactionsModal extends StatelessWidget { this.editMessageInputBuilder, this.messageShape, this.reverse = false, + this.showUserAvatar = DisplayWidget.show, this.onUserAvatarTap, }) : super(key: key); @override Widget build(BuildContext context) { - final ownId = StreamChat.of(context).user.id; return GestureDetector( behavior: HitTestBehavior.translucent, onTap: () { @@ -82,11 +83,10 @@ class MessageReactionsModal extends StatelessWidget { messageTheme: messageTheme, showReactions: false, showUsername: false, - showUserAvatar: message.user.id == ownId - ? DisplayWidget.gone - : DisplayWidget.show, + showUserAvatar: showUserAvatar, showReplyIndicator: false, showTimestamp: false, + translateUserAvatar: false, showSendingIndicator: DisplayWidget.gone, shape: messageShape, ), diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index 0e703fa0..4378086f 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -115,11 +115,15 @@ class MessageWidget extends StatefulWidget { final bool showEditMessage; final Map attachmentBuilders; + /// Center user avatar with bottom of the message + final bool translateUserAvatar; + MessageWidget({ Key key, @required this.message, @required this.messageTheme, this.reverse = false, + this.translateUserAvatar = true, this.shape, this.attachmentShape, this.borderSide, @@ -423,6 +427,10 @@ class _MessageWidgetState extends State { return StreamChannel( channel: channel, child: MessageActionsModal( + showUserAvatar: + widget.message.user.id == channel.client.state.user.id + ? DisplayWidget.gone + : DisplayWidget.show, messageTheme: widget.messageTheme, messageShape: widget.shape ?? _getDefaultShape(context), reverse: widget.reverse, @@ -447,6 +455,10 @@ class _MessageWidgetState extends State { return StreamChannel( channel: channel, child: MessageReactionsModal( + showUserAvatar: + widget.message.user.id == channel.client.state.user.id + ? DisplayWidget.gone + : DisplayWidget.show, onUserAvatarTap: widget.onUserAvatarTap, messageTheme: widget.messageTheme, messageShape: widget.shape ?? _getDefaultShape(context), @@ -614,7 +626,11 @@ class _MessageWidgetState extends State { padding: const EdgeInsets.symmetric(horizontal: 4.0), child: Transform.translate( offset: Offset( - 0, widget.messageTheme.avatarTheme.constraints.maxHeight / 2), + 0, + widget.translateUserAvatar + ? widget.messageTheme.avatarTheme.constraints.maxHeight / 2 + : 0, + ), child: UserAvatar( user: widget.message.user, onTap: widget.onUserAvatarTap,