add delete message

This commit is contained in:
Salvatore Giordano
2020-02-26 18:21:01 +01:00
parent 671e6f1f57
commit df86c377b2
2 changed files with 196 additions and 141 deletions
+2
View File
@@ -40,6 +40,8 @@ class ChannelPreview extends StatelessWidget {
}
Text _buildDate(BuildContext context, DateTime lastMessageAt) {
lastMessageAt = lastMessageAt.toLocal();
String stringDate;
final now = DateTime.now();
+71 -18
View File
@@ -51,6 +51,23 @@ class _MessageWidgetState extends State<MessageWidget>
final alignment =
isMyMessage ? Alignment.centerRight : Alignment.centerLeft;
Widget child;
if (widget.message.type == 'deleted') {
child = Align(
alignment: alignment,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 54,
vertical: 14,
),
child: Text(
'This message was deleted...',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
);
} else {
var row = <Widget>[
Column(
crossAxisAlignment:
@@ -78,7 +95,8 @@ class _MessageWidgetState extends State<MessageWidget>
row = row.reversed.toList();
}
return Container(
child = AnimatedContainer(
duration: Duration(milliseconds: 300),
padding: const EdgeInsets.symmetric(horizontal: 10.0),
margin: EdgeInsets.only(
top: isLastUser ? 5 : 24,
@@ -94,6 +112,12 @@ class _MessageWidgetState extends State<MessageWidget>
);
}
return AnimatedSwitcher(
duration: Duration(milliseconds: 300),
child: child,
);
}
Widget _buildThreadIndicator(BuildContext context) {
return widget.message.replyCount > 0
? GestureDetector(
@@ -147,7 +171,9 @@ class _MessageWidgetState extends State<MessageWidget>
if (attachmentWidget != null) {
final boxDecoration = _buildBoxDecoration(isMyMessage, isLastUser)
.copyWith(color: Color(0xffebebeb));
return ClipRRect(
return Padding(
padding: const EdgeInsets.only(bottom: 2.0),
child: ClipRRect(
borderRadius: boxDecoration.borderRadius,
child: Container(
decoration: boxDecoration,
@@ -167,7 +193,8 @@ class _MessageWidgetState extends State<MessageWidget>
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Text(
attachment.title,
@@ -214,6 +241,7 @@ class _MessageWidgetState extends State<MessageWidget>
top: nOfAttachmentWidgets > 1 ? 5 : 0,
),
),
),
);
}
@@ -223,8 +251,6 @@ class _MessageWidgetState extends State<MessageWidget>
);
if (widget.message.text.trim().isNotEmpty) {
final topPadding =
widget.message.reactionCounts?.isNotEmpty == true ? 2.0 : 0.0;
column.children.addAll(
<Widget>[
IntrinsicWidth(
@@ -246,7 +272,7 @@ class _MessageWidgetState extends State<MessageWidget>
? Positioned(
left: isMyMessage ? 8 : null,
right: !isMyMessage ? 8 : null,
top: -4,
top: -6,
child: CustomPaint(
painter: ReactionBubblePainter(),
),
@@ -258,11 +284,6 @@ class _MessageWidgetState extends State<MessageWidget>
left: isMyMessage ? 8.0 : 0.0,
),
child: Container(
margin: EdgeInsets.only(
top: nOfAttachmentWidgets > 0
? (topPadding)
: (topPadding),
),
decoration: _buildBoxDecoration(isMyMessage,
isLastUser || nOfAttachmentWidgets > 0),
padding: EdgeInsets.all(10),
@@ -289,11 +310,11 @@ class _MessageWidgetState extends State<MessageWidget>
return GestureDetector(
child: column,
onLongPress: () {
_showMessageBottomSheet(context);
_showMessageBottomSheet(context, isMyMessage);
});
}
void _showMessageBottomSheet(BuildContext context) {
void _showMessageBottomSheet(BuildContext context, bool isMyMessage) {
showModalBottomSheet(
context: context,
builder: (context) {
@@ -301,7 +322,11 @@ class _MessageWidgetState extends State<MessageWidget>
final textStyle = TextStyle(
fontSize: fontSize,
);
return Row(
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
@@ -327,12 +352,38 @@ class _MessageWidgetState extends State<MessageWidget>
},
),
ownReactionIndex != -1
? Text(widget.message.ownReactions[ownReactionIndex].score
.toString())
? Padding(
padding: const EdgeInsets.only(bottom: 4.0),
child: Text(widget
.message.ownReactions[ownReactionIndex].score
.toString()),
)
: SizedBox(),
],
);
}).toList(),
),
isMyMessage
? FlatButton(
child: Padding(
padding: const EdgeInsets.all(28.0),
child: Text(
'Delete message',
style: Theme.of(context)
.textTheme
.headline
.copyWith(color: Colors.red),
),
),
onPressed: () {
StreamChat.of(context)
.client
.deleteMessage(widget.message.id);
Navigator.pop(context);
},
)
: SizedBox(),
],
);
});
}
@@ -340,10 +391,12 @@ class _MessageWidgetState extends State<MessageWidget>
Widget _buildReactions(bool isMyMessage) {
return GestureDetector(
onTap: () {
_showMessageBottomSheet(context);
_showMessageBottomSheet(context, isMyMessage);
},
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 2.0),
padding: EdgeInsets.symmetric(
vertical:
widget.message.reactionCounts?.isNotEmpty == true ? 4.0 : 0),
child: AnimatedContainer(
duration: Duration(milliseconds: 300),
curve: Curves.decelerate,