diff options
author | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2020-07-05 13:22:48 +0300 |
---|---|---|
committer | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2020-07-06 15:27:06 +0300 |
commit | bbedeed3e37b5d145977c5ffbd75788f9ca1f4d5 (patch) | |
tree | 9abad07e8aa0fa17fd6d8d851973f0822a3c9849 /src/components/mail/view.rs | |
parent | 391058a59cc04c79b09e94a5b8d4352884005cfb (diff) |
More imap async fixes
Diffstat (limited to 'src/components/mail/view.rs')
-rw-r--r-- | src/components/mail/view.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/components/mail/view.rs b/src/components/mail/view.rs index 77dd48d9..81aab19f 100644 --- a/src/components/mail/view.rs +++ b/src/components/mail/view.rs @@ -193,11 +193,15 @@ impl MailView { .and_then(|mut op| op.as_bytes()) { Ok(fut) => { - let (chan, job_id) = account.job_executor.spawn_specialized(fut); + let (mut chan, job_id) = account.job_executor.spawn_specialized(fut); debug!(&job_id); self.active_jobs.insert(job_id.clone()); account.active_jobs.insert(job_id, JobRequest::AsBytes); - self.state = MailViewState::LoadingBody { job_id, chan }; + if let Ok(Some(bytes_result)) = try_recv_timeout!(&mut chan) { + self.state = MailViewState::Loaded { body: bytes_result }; + } else { + self.state = MailViewState::LoadingBody { job_id, chan }; + } } Err(err) => { context.replies.push_back(UIEvent::StatusEvent( |