Synchronize seen status across devices

Seen status is only synchronized on servers supporting IMAP CONDSTORE
extension. At the end of fetch loop iteration, flags are fetched for
all messages modified since previous synchronization and highest
modification sequence is stored into `imap_sync` table.
This commit is contained in:
link2xt
2022-01-02 19:03:44 +00:00
parent 3e0ce0e07a
commit 833e5f46cc
4 changed files with 162 additions and 9 deletions

View File

@@ -93,7 +93,11 @@ impl Imap {
// select new folder
if let Some(folder) = folder {
if let Some(ref mut session) = &mut self.session {
let res = session.select(folder).await;
let res = if self.config.can_condstore {
session.select_condstore(folder).await
} else {
session.select(folder).await
};
// <https://tools.ietf.org/html/rfc3501#section-6.3.1>
// says that if the server reports select failure we are in