setMetaDataEntries method
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>[];
var cmd = StringBuffer();
cmd.write('SETMETADATA ');
var entry = entries.first;
cmd.write('"${entry.mailboxName}" (');
for (entry in entries) {
cmd.write(' ');
cmd.write(entry.name);
cmd.write(' ');
if (entry.value == null) {
cmd.write('NIL');
} else if (_isSafeForQuotedTransmission(entry.valueText!)) {
cmd.write('"${entry.valueText}"');
} else {
cmd.write('{${entry.value!.length}}');
parts.add(cmd.toString());
cmd = StringBuffer();
cmd.write(entry.valueText);
}
}
cmd.write(')');
parts.add(cmd.toString());
final parser = NoopParser(this, _selectedMailbox);
Command command;
if (parts.length == 1) {
command = Command(parts.first);
} else {
command = Command.withContinuation(parts);
}
return sendCommand<Mailbox>(command, parser);
}