getMapGroupedMediaList method
Future<Map<String, List<MessageItem> > >
getMapGroupedMediaList(
- List<
ChatMessageModel> mediaMessages, - bool isMedia, [
- bool isLinkMedia = false
Implementation
Future<Map<String, List<MessageItem>>> getMapGroupedMediaList(
List<ChatMessageModel> mediaMessages, bool isMedia,
[bool isLinkMedia = false]) async {
// debugPrint("media message length--> ${mediaMessages.length}");
var calendarInstance = DateTime.now();
var currentYear = calendarInstance.year;
var currentMonth = calendarInstance.month;
var currentDay = calendarInstance.day;
var dateSymbols = DateFormat().dateSymbols.STANDALONEMONTHS;
int year;
int month;
int day;
//var viewAllMediaList = <GroupedMedia>[];
Map<String, List<MessageItem>> mapMediaList = {};
var previousCategoryType = 10;
var messages = <MessageItem>[];
for (var chatMessage in mediaMessages) {
var date = chatMessage.messageSentTime.toInt();
var calendar = DateTime.fromMicrosecondsSinceEpoch(date);
year = calendar.year;
month = calendar.month;
day = calendar.day;
var category = getCategoryName(
dateSymbols, currentDay, currentMonth, currentYear, day, month, year);
// debugPrint("getMapGroupedMediaList category--> $category");
if (isLinkMedia) {
if (previousCategoryType != category.key) {
messages = [];
}
previousCategoryType = category.key;
mapMediaList[category.value] =
getMapMessageWithURLList(messages, chatMessage);
} else {
if (!chatMessage.isMessageRecalled.value &&
(chatMessage.isMediaDownloaded() ||
chatMessage.isMediaUploaded()) &&
await isMediaAvailable(chatMessage, isMedia)) {
if (previousCategoryType != category.key) {
messages = [];
}
messages.add(MessageItem(chatMessage));
mapMediaList[category.value] = messages;
previousCategoryType = category.key;
} else {
debugPrint("getMapGroupedMediaList isMediaAvailable --> false");
}
}
}
return mapMediaList;
}