From 017a45d5cdbab34f645e97ab16147c2dd915e08d Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Thu, 16 Jul 2020 22:54:50 +0300 Subject: [PATCH] conf/accounts: add JobRequest::Generic --- src/conf/accounts.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/conf/accounts.rs b/src/conf/accounts.rs index 1ab58ee6..3d643579 100644 --- a/src/conf/accounts.rs +++ b/src/conf/accounts.rs @@ -169,6 +169,11 @@ pub enum JobRequest { Pin>> + Send + 'static>>, )>, ), + Generic { + name: String, + handle: JoinHandle, + channel: JobChannel<()>, + }, IsOnline(JoinHandle, oneshot::Receiver>), Refresh(MailboxHash, JoinHandle, oneshot::Receiver>), SetFlags(EnvelopeHash, JoinHandle, oneshot::Receiver>), @@ -196,6 +201,7 @@ pub enum JobRequest { impl core::fmt::Debug for JobRequest { fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { match self { + JobRequest::Generic { name, .. } => write!(f, "JobRequest::Generic({})", name), JobRequest::Mailboxes(_, _) => write!(f, "JobRequest::Mailboxes"), JobRequest::Get(hash, _, _) => write!(f, "JobRequest::Get({})", hash), JobRequest::IsOnline(_, _) => write!(f, "JobRequest::IsOnline"), @@ -1937,6 +1943,39 @@ impl Account { JobRequest::Watch(_) => { debug!("JobRequest::Watch finished??? "); } + JobRequest::Generic { + name, + mut channel, + handle: _, + } => { + let r = channel.try_recv().unwrap(); + match r { + Some(Err(err)) => { + self.sender + .send(ThreadEvent::UIEvent(UIEvent::Notification( + Some(format!("{}: {} failed", &self.name, name,)), + err.to_string(), + Some(crate::types::NotificationType::ERROR), + ))) + .expect("Could not send event on main channel"); + } + Some(Ok(_)) => { + self.sender + .send(ThreadEvent::UIEvent(UIEvent::Notification( + Some(format!("{}: {} succeeded", &self.name, name,)), + String::new(), + Some(crate::types::NotificationType::INFO), + ))) + .expect("Could not send event on main channel"); + } + None => {} + } + self.sender + .send(ThreadEvent::UIEvent(UIEvent::StatusEvent( + StatusEvent::JobFinished(*job_id), + ))) + .unwrap(); + } } true } else {