center user avatar in modal

This commit is contained in:
Salvatore Giordano
2020-10-29 12:33:18 +01:00
parent c9c790e120
commit 8424e3a972
3 changed files with 25 additions and 9 deletions
+4 -4
View File
@@ -25,6 +25,7 @@ class MessageActionsModal extends StatelessWidget {
final bool showReply; final bool showReply;
final bool reverse; final bool reverse;
final ShapeBorder messageShape; final ShapeBorder messageShape;
final DisplayWidget showUserAvatar;
const MessageActionsModal({ const MessageActionsModal({
Key key, Key key,
@@ -36,6 +37,7 @@ class MessageActionsModal extends StatelessWidget {
this.onThreadTap, this.onThreadTap,
this.showCopyMessage = true, this.showCopyMessage = true,
this.showReply = true, this.showReply = true,
this.showUserAvatar = DisplayWidget.show,
this.editMessageInputBuilder, this.editMessageInputBuilder,
this.messageShape, this.messageShape,
this.reverse = false, this.reverse = false,
@@ -43,7 +45,6 @@ class MessageActionsModal extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final ownId = StreamChat.of(context).user.id;
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.translucent, behavior: HitTestBehavior.translucent,
onTap: () { onTap: () {
@@ -92,10 +93,9 @@ class MessageActionsModal extends StatelessWidget {
showReactions: false, showReactions: false,
showUsername: false, showUsername: false,
showReplyIndicator: false, showReplyIndicator: false,
showUserAvatar: message.user.id == ownId showUserAvatar: showUserAvatar,
? DisplayWidget.gone
: DisplayWidget.show,
showTimestamp: false, showTimestamp: false,
translateUserAvatar: false,
showSendingIndicator: DisplayWidget.gone, showSendingIndicator: DisplayWidget.gone,
shape: messageShape, shape: messageShape,
), ),
+4 -4
View File
@@ -17,6 +17,7 @@ class MessageReactionsModal extends StatelessWidget {
final MessageTheme messageTheme; final MessageTheme messageTheme;
final bool reverse; final bool reverse;
final bool showReactions; final bool showReactions;
final DisplayWidget showUserAvatar;
final ShapeBorder messageShape; final ShapeBorder messageShape;
final void Function(User) onUserAvatarTap; final void Function(User) onUserAvatarTap;
@@ -29,12 +30,12 @@ class MessageReactionsModal extends StatelessWidget {
this.editMessageInputBuilder, this.editMessageInputBuilder,
this.messageShape, this.messageShape,
this.reverse = false, this.reverse = false,
this.showUserAvatar = DisplayWidget.show,
this.onUserAvatarTap, this.onUserAvatarTap,
}) : super(key: key); }) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final ownId = StreamChat.of(context).user.id;
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.translucent, behavior: HitTestBehavior.translucent,
onTap: () { onTap: () {
@@ -82,11 +83,10 @@ class MessageReactionsModal extends StatelessWidget {
messageTheme: messageTheme, messageTheme: messageTheme,
showReactions: false, showReactions: false,
showUsername: false, showUsername: false,
showUserAvatar: message.user.id == ownId showUserAvatar: showUserAvatar,
? DisplayWidget.gone
: DisplayWidget.show,
showReplyIndicator: false, showReplyIndicator: false,
showTimestamp: false, showTimestamp: false,
translateUserAvatar: false,
showSendingIndicator: DisplayWidget.gone, showSendingIndicator: DisplayWidget.gone,
shape: messageShape, shape: messageShape,
), ),
+17 -1
View File
@@ -115,11 +115,15 @@ class MessageWidget extends StatefulWidget {
final bool showEditMessage; final bool showEditMessage;
final Map<String, AttachmentBuilder> attachmentBuilders; final Map<String, AttachmentBuilder> attachmentBuilders;
/// Center user avatar with bottom of the message
final bool translateUserAvatar;
MessageWidget({ MessageWidget({
Key key, Key key,
@required this.message, @required this.message,
@required this.messageTheme, @required this.messageTheme,
this.reverse = false, this.reverse = false,
this.translateUserAvatar = true,
this.shape, this.shape,
this.attachmentShape, this.attachmentShape,
this.borderSide, this.borderSide,
@@ -423,6 +427,10 @@ class _MessageWidgetState extends State<MessageWidget> {
return StreamChannel( return StreamChannel(
channel: channel, channel: channel,
child: MessageActionsModal( child: MessageActionsModal(
showUserAvatar:
widget.message.user.id == channel.client.state.user.id
? DisplayWidget.gone
: DisplayWidget.show,
messageTheme: widget.messageTheme, messageTheme: widget.messageTheme,
messageShape: widget.shape ?? _getDefaultShape(context), messageShape: widget.shape ?? _getDefaultShape(context),
reverse: widget.reverse, reverse: widget.reverse,
@@ -447,6 +455,10 @@ class _MessageWidgetState extends State<MessageWidget> {
return StreamChannel( return StreamChannel(
channel: channel, channel: channel,
child: MessageReactionsModal( child: MessageReactionsModal(
showUserAvatar:
widget.message.user.id == channel.client.state.user.id
? DisplayWidget.gone
: DisplayWidget.show,
onUserAvatarTap: widget.onUserAvatarTap, onUserAvatarTap: widget.onUserAvatarTap,
messageTheme: widget.messageTheme, messageTheme: widget.messageTheme,
messageShape: widget.shape ?? _getDefaultShape(context), messageShape: widget.shape ?? _getDefaultShape(context),
@@ -614,7 +626,11 @@ class _MessageWidgetState extends State<MessageWidget> {
padding: const EdgeInsets.symmetric(horizontal: 4.0), padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: Transform.translate( child: Transform.translate(
offset: Offset( offset: Offset(
0, widget.messageTheme.avatarTheme.constraints.maxHeight / 2), 0,
widget.translateUserAvatar
? widget.messageTheme.avatarTheme.constraints.maxHeight / 2
: 0,
),
child: UserAvatar( child: UserAvatar(
user: widget.message.user, user: widget.message.user,
onTap: widget.onUserAvatarTap, onTap: widget.onUserAvatarTap,