setMetaDataEntries method

Future<Mailbox?> setMetaDataEntries(
  1. List<MetaDataEntry> entries
)

Saves the given meta data entries.

Note that each MetaDataEntry.mailboxName is expected to be the same. Set MetaDataEntry.value to null to delete the specified meta data entry Compare https://tools.ietf.org/html/rfc5464 for details.

Implementation

Future<Mailbox?> setMetaDataEntries(List<MetaDataEntry> entries) {
  final parts = <String>[];
  final cmd = StringBuffer()..write('SETMETADATA ');
  _writeImapString(cmd, parts, entries.first.mailboxName);
  cmd.write(' (');
  var isFirst = true;
  for (final entry in entries) {
    if (!isFirst) {
      cmd.write(' ');
    }
    isFirst = false;
    cmd
      ..write(entry.name)
      ..write(' ');
    final value = entry.value;
    if (value == null) {
      cmd.write('NIL');
    } else {
      _writeMetaDataValue(cmd, parts, value);
    }
  }
  cmd.write(')');
  parts.add(cmd.toString());
  final parser = NoopParser(this, _selectedMailbox);
  Command command;
  command = parts.length == 1
      ? Command(parts.first)
      : Command.withContinuation(parts);

  return sendCommand<Mailbox?>(command, parser);
}