diff --git a/melib/src/backends/jmap.rs b/melib/src/backends/jmap.rs index 1a5a23ab6..3131b1bc2 100644 --- a/melib/src/backends/jmap.rs +++ b/melib/src/backends/jmap.rs @@ -341,7 +341,32 @@ impl MailBackend for JmapType { } fn watch(&self) -> ResultFuture<()> { - Err(MeliError::from("JMAP watch for updates is unimplemented")) + let connection = self.connection.clone(); + let store = self.store.clone(); + Ok(Box::pin(async move { + { + let mut conn = connection.lock().await; + conn.connect().await?; + } + loop { + { + let mailbox_hashes = { + store + .mailboxes + .read() + .unwrap() + .keys() + .cloned() + .collect::>() + }; + let conn = connection.lock().await; + for mailbox_hash in mailbox_hashes { + conn.email_changes(mailbox_hash).await?; + } + } + crate::connections::sleep(std::time::Duration::from_secs(60)).await; + } + })) } fn mailboxes(&self) -> ResultFuture> {