Expose unilateral mailbox flag changes

This is a backwards incompatible change, since it adds a variant to a
public enum.
This commit is contained in:
Jon Gjengset 2020-05-18 14:12:10 -04:00
parent fbdb5d3be4
commit 0c3ce7943d
No known key found for this signature in database
GPG key ID: 3CB1EC545A706318
2 changed files with 18 additions and 2 deletions

View file

@ -322,8 +322,15 @@ fn handle_unilateral<'a>(
Response::MailboxData(MailboxDatum::Recent(n)) => { Response::MailboxData(MailboxDatum::Recent(n)) => {
unsolicited.send(UnsolicitedResponse::Recent(n)).unwrap(); unsolicited.send(UnsolicitedResponse::Recent(n)).unwrap();
} }
Response::MailboxData(MailboxDatum::Flags(_)) => { Response::MailboxData(MailboxDatum::Flags(flags)) => {
// TODO: next breaking change: unsolicited
.send(UnsolicitedResponse::Flags(
flags
.into_iter()
.map(|s| Flag::from(s.to_string()))
.collect(),
))
.unwrap();
} }
Response::MailboxData(MailboxDatum::Exists(n)) => { Response::MailboxData(MailboxDatum::Exists(n)) => {
unsolicited.send(UnsolicitedResponse::Exists(n)).unwrap(); unsolicited.send(UnsolicitedResponse::Exists(n)).unwrap();

View file

@ -262,6 +262,15 @@ pub enum UnsolicitedResponse {
/// sequence numbers 9, 8, 7, 6, and 5. /// sequence numbers 9, 8, 7, 6, and 5.
// TODO: the spec doesn't seem to say anything about when these may be received as unsolicited? // TODO: the spec doesn't seem to say anything about when these may be received as unsolicited?
Expunge(Seq), Expunge(Seq),
/// An unsolicited [`FLAGS` response](https://tools.ietf.org/html/rfc3501#section-7.2.6) that
/// identifies the flags (at a minimum, the system-defined flags) that are applicable in the
/// mailbox. Flags other than the system flags can also exist, depending on server
/// implementation.
///
/// See [`Flag`] for details.
// TODO: the spec doesn't seem to say anything about when these may be received as unsolicited?
Flags(Vec<Flag<'static>>),
} }
/// This type wraps an input stream and a type that was constructed by parsing that input stream, /// This type wraps an input stream and a type that was constructed by parsing that input stream,