add deleted message in preview

This commit is contained in:
Salvatore Giordano
2020-02-27 10:47:08 +01:00
parent f93430b11d
commit d2fe921ed9
+26 -7
View File
@@ -33,14 +33,18 @@ class ChannelPreview extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[ children: <Widget>[
_buildDate(context, channel.lastMessageAt), _buildDate(context),
], ],
), ),
); );
} }
Text _buildDate(BuildContext context, DateTime lastMessageAt) { Widget _buildDate(BuildContext context) {
lastMessageAt = lastMessageAt.toLocal(); return StreamBuilder<DateTime>(
stream: channel.lastMessageAtStream,
initialData: channel.lastMessageAt,
builder: (context, snapshot) {
final lastMessageAt = snapshot.data.toLocal();
String stringDate; String stringDate;
final now = DateTime.now(); final now = DateTime.now();
@@ -60,12 +64,14 @@ class ChannelPreview extends StatelessWidget {
stringDate, stringDate,
style: Theme.of(context).textTheme.caption, style: Theme.of(context).textTheme.caption,
); );
},
);
} }
Widget _buildSubtitle() { Widget _buildSubtitle() {
return StreamBuilder<List<User>>( return StreamBuilder<List<User>>(
stream: channel.state.typingEventsStream, stream: channel.state.typingEventsStream,
initialData: [], initialData: channel.state.typingEvents,
builder: (context, snapshot) { builder: (context, snapshot) {
final typings = snapshot.data; final typings = snapshot.data;
final opacity = channel.state.unreadCount > .0 ? 1.0 : 0.5; final opacity = channel.state.unreadCount > .0 ? 1.0 : 0.5;
@@ -76,12 +82,20 @@ class ChannelPreview extends StatelessWidget {
} }
Widget _buildLastMessage(BuildContext context, double opacity) { Widget _buildLastMessage(BuildContext context, double opacity) {
final lastMessage = return StreamBuilder<List<Message>>(
channel.state.messages.isNotEmpty ? channel.state.messages.last : null; stream: channel.state.messagesStream,
initialData: channel.state.messages,
builder: (context, snapshot) {
final messages = snapshot.data;
final lastMessage = messages.isNotEmpty ? messages.last : null;
if (lastMessage == null) { if (lastMessage == null) {
return SizedBox(); return SizedBox();
} }
String text;
if (lastMessage.type == 'deleted') {
text = 'This message was deleted.';
} else {
final prefix = lastMessage.attachments final prefix = lastMessage.attachments
.map((e) { .map((e) {
if (e.type == 'image') { if (e.type == 'image') {
@@ -94,14 +108,19 @@ class ChannelPreview extends StatelessWidget {
.where((e) => e != null) .where((e) => e != null)
.join(' '); .join(' ');
text = '$prefix ${lastMessage.text ?? ''}';
}
return Text( return Text(
'$prefix ${lastMessage.text ?? ''}', text,
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.caption.copyWith( style: Theme.of(context).textTheme.caption.copyWith(
color: Colors.black.withOpacity(opacity), color: Colors.black.withOpacity(opacity),
), ),
); );
},
);
} }
Text _buildTypings(List<User> typings, BuildContext context, double opacity) { Text _buildTypings(List<User> typings, BuildContext context, double opacity) {