extractMessage function

Message? extractMessage(
  1. BeautifulSoup soup,
  2. MessageRef ref
)

Implementation

Message? extractMessage(BeautifulSoup soup, MessageRef ref) {
  // extract receivers
  List<MetaDataEntry> receivers = [];
  Bs4Element? receiverField = soup.find('*',
      id: 's_m_Content_Content_MessageThreadCtrl_RecipientsReadMode');
  List<Bs4Element>? receiverSpans = receiverField?.findAll('span');
  if (receiverSpans != null) {
    for (var receiverSpan in receiverSpans) {
      String? id = receiverSpan.getAttrValue(lectioContextKey);
      String name = receiverSpan.text;
      if (id != null) {
        receivers.add(MetaDataEntry(id: id, name: name));
      }
    }
  }

  // extract threads
  List<ThreadEntry> thread = [];
  List<Bs4Element> messageThreads = soup.findAll('*', id: 'GridRowMessage');
  for (int i = 0; i < messageThreads.length; i++) {
    var entry = messageThreads.elementAt(i);

    var extractedEntry = extractMessageThread(entry);
    if (extractedEntry != null) {
      thread.add(extractedEntry);
    }
  }

  return Message(ref.id, thread, receivers, ref);
}