parent
7ff22229a9
commit
30b1808bdb
|
@ -150,6 +150,8 @@ pub trait MailBackend: ::std::fmt::Debug {
|
||||||
fn watch(&self, sender: RefreshEventConsumer) -> Result<()>;
|
fn watch(&self, sender: RefreshEventConsumer) -> Result<()>;
|
||||||
fn folders(&self) -> Vec<Folder>;
|
fn folders(&self) -> Vec<Folder>;
|
||||||
fn operation(&self, hash: EnvelopeHash, folder_hash: FolderHash) -> Box<BackendOp>;
|
fn operation(&self, hash: EnvelopeHash, folder_hash: FolderHash) -> Box<BackendOp>;
|
||||||
|
|
||||||
|
fn save(&self, message: String, folder: &str) -> Result<()>;
|
||||||
//login function
|
//login function
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ extern crate xdg;
|
||||||
use super::{MaildirFolder, MaildirOp};
|
use super::{MaildirFolder, MaildirOp};
|
||||||
use async::*;
|
use async::*;
|
||||||
use conf::AccountSettings;
|
use conf::AccountSettings;
|
||||||
use error::Result;
|
use error::{Result, MeliError};
|
||||||
use mailbox::backends::{
|
use mailbox::backends::{
|
||||||
BackendFolder, BackendOp, Folder, FolderHash, MailBackend, RefreshEvent, RefreshEventConsumer,
|
BackendFolder, BackendOp, Folder, FolderHash, MailBackend, RefreshEvent, RefreshEventConsumer,
|
||||||
RefreshEventKind::*,
|
RefreshEventKind::*,
|
||||||
|
@ -49,6 +49,7 @@ use std::ffi::OsStr;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
use std::io;
|
use std::io;
|
||||||
|
use std::io::Write;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
use std::path::{Component, Path, PathBuf};
|
use std::path::{Component, Path, PathBuf};
|
||||||
use std::result;
|
use std::result;
|
||||||
|
@ -327,9 +328,27 @@ impl MailBackend for MaildirType {
|
||||||
})?;
|
})?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn operation(&self, hash: EnvelopeHash, folder_hash: FolderHash) -> Box<BackendOp> {
|
fn operation(&self, hash: EnvelopeHash, folder_hash: FolderHash) -> Box<BackendOp> {
|
||||||
Box::new(MaildirOp::new(hash, self.hash_indexes.clone(), folder_hash))
|
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 {
|
impl MaildirType {
|
||||||
|
|
|
@ -401,7 +401,11 @@ impl Component for Composer {
|
||||||
}
|
}
|
||||||
('n', _) => {},
|
('n', _) => {},
|
||||||
('y', ViewMode::Discard(u)) => {
|
('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 {
|
context.replies.push_back(UIEvent {
|
||||||
id: 0,
|
id: 0,
|
||||||
event_type: UIEventType::Action(Tab(Kill(*u))),
|
event_type: UIEventType::Action(Tab(Kill(*u))),
|
||||||
|
|
|
@ -60,6 +60,7 @@ pub struct FileAccount {
|
||||||
root_folder: String,
|
root_folder: String,
|
||||||
format: String,
|
format: String,
|
||||||
sent_folder: String,
|
sent_folder: String,
|
||||||
|
draft_folder: String,
|
||||||
identity: String,
|
identity: String,
|
||||||
display_name: Option<String>,
|
display_name: Option<String>,
|
||||||
threaded: bool,
|
threaded: bool,
|
||||||
|
|
|
@ -299,6 +299,10 @@ impl Account {
|
||||||
self.load_mailbox(index, m);
|
self.load_mailbox(index, m);
|
||||||
Ok(())
|
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 {
|
impl Index<usize> for Account {
|
||||||
|
|
Loading…
Reference in New Issue