parent
7ff22229a9
commit
30b1808bdb
|
@ -150,6 +150,8 @@ pub trait MailBackend: ::std::fmt::Debug {
|
|||
fn watch(&self, sender: RefreshEventConsumer) -> Result<()>;
|
||||
fn folders(&self) -> Vec<Folder>;
|
||||
fn operation(&self, hash: EnvelopeHash, folder_hash: FolderHash) -> Box<BackendOp>;
|
||||
|
||||
fn save(&self, message: String, folder: &str) -> Result<()>;
|
||||
//login function
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ extern crate xdg;
|
|||
use super::{MaildirFolder, MaildirOp};
|
||||
use async::*;
|
||||
use conf::AccountSettings;
|
||||
use error::Result;
|
||||
use error::{Result, MeliError};
|
||||
use mailbox::backends::{
|
||||
BackendFolder, BackendOp, Folder, FolderHash, MailBackend, RefreshEvent, RefreshEventConsumer,
|
||||
RefreshEventKind::*,
|
||||
|
@ -49,6 +49,7 @@ use std::ffi::OsStr;
|
|||
use std::fs;
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::io;
|
||||
use std::io::Write;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use std::path::{Component, Path, PathBuf};
|
||||
use std::result;
|
||||
|
@ -327,9 +328,27 @@ impl MailBackend for MaildirType {
|
|||
})?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn operation(&self, hash: EnvelopeHash, folder_hash: FolderHash) -> Box<BackendOp> {
|
||||
Box::new(MaildirOp::new(hash, self.hash_indexes.clone(), folder_hash))
|
||||
}
|
||||
|
||||
fn save(&self, message: String, folder: &str) -> Result<()> {
|
||||
for f in &self.folders {
|
||||
if f.name == folder {
|
||||
let mut path = f.path.clone();
|
||||
path.push("cur");
|
||||
path.push("draft:2,");
|
||||
eprintln!("saving at {}", path.display());
|
||||
let file = fs::File::create(path)?;
|
||||
let mut writer = io::BufWriter::new(file);
|
||||
writer.write(&message.into_bytes());
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
|
||||
Err(MeliError::new(format!("'{}' is not a valid folder.", folder)))
|
||||
}
|
||||
}
|
||||
|
||||
impl MaildirType {
|
||||
|
|
|
@ -401,7 +401,11 @@ impl Component for Composer {
|
|||
}
|
||||
('n', _) => {},
|
||||
('y', ViewMode::Discard(u)) => {
|
||||
eprintln!("{:?}", self.draft.to_string());
|
||||
let account = &context.accounts[self.account_cursor];
|
||||
let draft = std::mem::replace(&mut self.draft, Draft::default());
|
||||
eprintln!("{:?}", account.save_draft(draft));
|
||||
|
||||
//eprintln!("{:?}", self.draft.to_string());
|
||||
context.replies.push_back(UIEvent {
|
||||
id: 0,
|
||||
event_type: UIEventType::Action(Tab(Kill(*u))),
|
||||
|
|
|
@ -60,6 +60,7 @@ pub struct FileAccount {
|
|||
root_folder: String,
|
||||
format: String,
|
||||
sent_folder: String,
|
||||
draft_folder: String,
|
||||
identity: String,
|
||||
display_name: Option<String>,
|
||||
threaded: bool,
|
||||
|
|
|
@ -299,6 +299,10 @@ impl Account {
|
|||
self.load_mailbox(index, m);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn save_draft(&self, draft: Draft) -> Result<()> {
|
||||
self.backend.save(draft.to_string()?, &self.settings.conf.draft_folder)
|
||||
}
|
||||
}
|
||||
|
||||
impl Index<usize> for Account {
|
||||
|
|
Loading…
Reference in New Issue