onCommandResult method

void onCommandResult(
  1. ImapResponse imapResponse
)

Processes the command result response from the server.

Implementation

void onCommandResult(ImapResponse imapResponse) {
  final line = imapResponse.parseText;
  final spaceIndex = line.indexOf(' ');
  if (spaceIndex != -1) {
    final commandId = line.substring(0, spaceIndex);
    final task = _tasks[commandId];
    if (task != null) {
      if (task == _currentCommandTask) {
        _currentCommandTask = null;
      }
      imapResponse.parseText = line.substring(spaceIndex + 1);
      final response = task.parse(imapResponse);
      try {
        if (!task.completer.isCompleted) {
          if (response.isOkStatus) {
            task.completer.complete(response.result);
          } else {
            task.completer
                .completeError(ImapException(this, response.details));
          }
        }
      } catch (e, s) {
        print('Unable to complete task ${task.command.logText}: $e $s');
        print('response: ${imapResponse.parseText}');
        print('result: ${response.result}');
        try {
          task.completer.completeError(ImapException(this, response.details));
        } on Exception {
          // ignore
        }
      }
    } else {
      log('ERROR: no task found for command [$commandId]');
    }
  } else {
    log('unexpected SERVER response: [$imapResponse]');
  }
}