getMessages method

Future<List<Message>> getMessages()

Returns a list of User's messages.

Implementation

Future<List<Message>> getMessages() async {
  List<Message> messages = [];
  dynamic jsonDecodedResponse;
  final response = await _client.get(
    Uri.https(
      'openeclass.$instituteId.gr',
      '/modules/message/ajax_handler.php',
      {'mbox_type': 'inbox'},
    ),
    headers: {
      'Cookie': 'PHPSESSID=$_token',
      'iDisplayLength': '-1',
      'X-Requested-With': 'XMLHttpRequest',
    },
  );
  if (response.statusCode != 200) {
    throw Exception('Failed to get messages.');
  }
  try {
    jsonDecodedResponse = jsonDecode(response.body);
  } on FormatException {
    throw ("Can't retrieve user's messages because they are not logged in or the token has expired.");
  }
  final document = jsonDecodedResponse["aaData"];
  for (var element in document) {
    var messageResponse = MessageResponse.fromJson(element);
    final body = await _getMessageBody(
      messageId: messageResponse.id,
    );
    final subject = _extractSubject(subjectResponse: messageResponse.subject);
    final course = _extractCourse(courseResponse: messageResponse.course);
    final from = _extractSender(senderResponse: messageResponse.from);
    messages.add(
      Message(
        id: messageResponse.id,
        subject: subject,
        course: course,
        from: from,
        date: messageResponse.date,
        body: body,
      ),
    );
  }
  return messages;
}