add deleted message in preview
This commit is contained in:
@@ -33,39 +33,45 @@ 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();
|
||||||
|
|
||||||
if (now.year != lastMessageAt.year ||
|
if (now.year != lastMessageAt.year ||
|
||||||
now.month != lastMessageAt.month ||
|
now.month != lastMessageAt.month ||
|
||||||
now.day != lastMessageAt.day) {
|
now.day != lastMessageAt.day) {
|
||||||
stringDate =
|
stringDate =
|
||||||
'${lastMessageAt.day}/${lastMessageAt.month}/${lastMessageAt.year}';
|
'${lastMessageAt.day}/${lastMessageAt.month}/${lastMessageAt.year}';
|
||||||
stringDate = formatDate(lastMessageAt, [dd, '/', mm, '/', yyyy]);
|
stringDate = formatDate(lastMessageAt, [dd, '/', mm, '/', yyyy]);
|
||||||
} else {
|
} else {
|
||||||
stringDate = '${lastMessageAt.hour}:${lastMessageAt.minute}';
|
stringDate = '${lastMessageAt.hour}:${lastMessageAt.minute}';
|
||||||
stringDate = formatDate(lastMessageAt, [HH, ':', nn]);
|
stringDate = formatDate(lastMessageAt, [HH, ':', nn]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Text(
|
return Text(
|
||||||
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,31 +82,44 @@ 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,
|
||||||
if (lastMessage == null) {
|
initialData: channel.state.messages,
|
||||||
return SizedBox();
|
builder: (context, snapshot) {
|
||||||
}
|
final messages = snapshot.data;
|
||||||
|
final lastMessage = messages.isNotEmpty ? messages.last : null;
|
||||||
|
if (lastMessage == null) {
|
||||||
|
return SizedBox();
|
||||||
|
}
|
||||||
|
|
||||||
final prefix = lastMessage.attachments
|
String text;
|
||||||
.map((e) {
|
if (lastMessage.type == 'deleted') {
|
||||||
if (e.type == 'image') {
|
text = 'This message was deleted.';
|
||||||
return '📷';
|
} else {
|
||||||
} else if (e.type == 'video') {
|
final prefix = lastMessage.attachments
|
||||||
return '🎬';
|
.map((e) {
|
||||||
}
|
if (e.type == 'image') {
|
||||||
return null;
|
return '📷';
|
||||||
})
|
} else if (e.type == 'video') {
|
||||||
.where((e) => e != null)
|
return '🎬';
|
||||||
.join(' ');
|
}
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
.where((e) => e != null)
|
||||||
|
.join(' ');
|
||||||
|
|
||||||
return Text(
|
text = '$prefix ${lastMessage.text ?? ''}';
|
||||||
'$prefix ${lastMessage.text ?? ''}',
|
}
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
return Text(
|
||||||
style: Theme.of(context).textTheme.caption.copyWith(
|
text,
|
||||||
color: Colors.black.withOpacity(opacity),
|
maxLines: 1,
|
||||||
),
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: Theme.of(context).textTheme.caption.copyWith(
|
||||||
|
color: Colors.black.withOpacity(opacity),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user