From 32f196143e87fdc9f85ee3ca47436d218e12a4eb Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Fri, 17 Jul 2020 00:01:35 +0300 Subject: [PATCH] melib: add supports_search() method to MailBackend --- melib/src/backends.rs | 1 + melib/src/backends/imap.rs | 5 +++++ melib/src/backends/jmap.rs | 4 ++++ melib/src/backends/maildir/backend.rs | 4 ++++ melib/src/backends/mbox.rs | 4 ++++ melib/src/backends/notmuch.rs | 4 ++++ src/plugins/backend.rs | 5 +++++ 7 files changed, 27 insertions(+) diff --git a/melib/src/backends.rs b/melib/src/backends.rs index 609b9a8d..1d48ae2e 100644 --- a/melib/src/backends.rs +++ b/melib/src/backends.rs @@ -287,6 +287,7 @@ pub type ResultFuture = Result> + Send pub trait MailBackend: ::std::fmt::Debug + Send + Sync { fn is_async(&self) -> bool; fn is_remote(&self) -> bool; + fn supports_search(&self) -> bool; fn is_online(&self) -> Result<()> { Err(MeliError::new("Unimplemented.")) } diff --git a/melib/src/backends/imap.rs b/melib/src/backends/imap.rs index 29507a83..46f265bd 100644 --- a/melib/src/backends/imap.rs +++ b/melib/src/backends/imap.rs @@ -183,6 +183,11 @@ impl MailBackend for ImapType { fn is_remote(&self) -> bool { true } + + fn supports_search(&self) -> bool { + true + } + fn get_async( &mut self, mailbox: &Mailbox, diff --git a/melib/src/backends/jmap.rs b/melib/src/backends/jmap.rs index 737e974e..c506370e 100644 --- a/melib/src/backends/jmap.rs +++ b/melib/src/backends/jmap.rs @@ -198,6 +198,10 @@ impl MailBackend for JmapType { true } + fn supports_search(&self) -> bool { + true + } + fn is_online(&self) -> Result<()> { if self.online.lock().unwrap().1.is_err() && Instant::now().duration_since(self.online.lock().unwrap().0) diff --git a/melib/src/backends/maildir/backend.rs b/melib/src/backends/maildir/backend.rs index ac2637c5..afd51908 100644 --- a/melib/src/backends/maildir/backend.rs +++ b/melib/src/backends/maildir/backend.rs @@ -183,6 +183,10 @@ impl MailBackend for MaildirType { false } + fn supports_search(&self) -> bool { + false + } + fn is_online(&self) -> Result<()> { Ok(()) } diff --git a/melib/src/backends/mbox.rs b/melib/src/backends/mbox.rs index fa508d0f..a8f9a298 100644 --- a/melib/src/backends/mbox.rs +++ b/melib/src/backends/mbox.rs @@ -710,6 +710,10 @@ impl MailBackend for MboxType { false } + fn supports_search(&self) -> bool { + false + } + fn is_online(&self) -> Result<()> { Ok(()) } diff --git a/melib/src/backends/notmuch.rs b/melib/src/backends/notmuch.rs index 9e3afdbc..f648664c 100644 --- a/melib/src/backends/notmuch.rs +++ b/melib/src/backends/notmuch.rs @@ -326,6 +326,10 @@ impl MailBackend for NotmuchDb { false } + fn supports_search(&self) -> bool { + true + } + fn is_online(&self) -> Result<()> { Ok(()) } diff --git a/src/plugins/backend.rs b/src/plugins/backend.rs index b87cbbd1..c5a7b602 100644 --- a/src/plugins/backend.rs +++ b/src/plugins/backend.rs @@ -75,6 +75,11 @@ impl MailBackend for PluginBackend { false } + fn supports_search(&self) -> bool { + // TODO + false + } + fn is_online(&self) -> Result<()> { if let Ok(mut is_online) = self.is_online.try_lock() { let now = std::time::Instant::now();