getMapGroupedMediaList method

Future<Map<String, List<MessageItem>>> getMapGroupedMediaList(
  1. List<ChatMessageModel> mediaMessages,
  2. bool isMedia, [
  3. 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;
}