setMetaData method

Future<Mailbox?> setMetaData(
  1. MetaDataEntry entry
)

Saves the specified meta data entry.

Set MetaDataEntry.value to null to delete the specified meta data entry Compare https://tools.ietf.org/html/rfc5464 for details.

Implementation

Future<Mailbox?> setMetaData(MetaDataEntry entry) {
  final valueText = entry.valueText;
  final Command cmd;
  final value = entry.value;
  if (value == null || _isSafeForQuotedTransmission(valueText ?? '')) {
    final cmdText = 'SETMETADATA "${entry.mailboxName}" '
        '(${entry.name} '
        '${value == null ? 'NIL' : '"$valueText"'})';
    cmd = Command(cmdText);
  } else {
    // this is a complex command that requires continuation responses
    final setPart = 'SETMETADATA "${entry.mailboxName}" '
        '(${entry.name} {${value.length}}';
    final parts = <String>[setPart, '$valueText)'];
    cmd = Command.withContinuation(parts);
  }
  final parser = NoResponseParser(_selectedMailbox);

  return sendCommand(cmd, parser);
}