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()..write('SETMETADATA ');
var entry = entries.first;
cmd.write('"${entry.mailboxName}" (');
for (entry in entries) {
cmd
..write(' ')
..write(entry.name)
..write(' ');
final value = entry.value;
if (value == null) {
cmd.write('NIL');
} else if (_isSafeForQuotedTransmission(entry.valueText ?? '')) {
cmd.write('"${entry.valueText}"');
} else {
cmd.write('{${value.length}}');
parts.add(cmd.toString());
cmd = StringBuffer()..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);
}