mirror of
https://github.com/pimalaya/himalaya.git
synced 2026-06-17 13:17:55 +08:00
feat: return id of added message
The feature is only implemented for the message save and template save commands. Other commands like message send copy move don't return the added id. Refs: #627
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
use std::{
|
||||
fmt,
|
||||
io::{self, BufRead, IsTerminal},
|
||||
sync::Arc,
|
||||
};
|
||||
|
||||
use clap::Parser;
|
||||
use color_eyre::Result;
|
||||
use email::{backend::feature::BackendFeatureSource, config::Config};
|
||||
use email::{backend::feature::BackendFeatureSource, config::Config, envelope::SingleId};
|
||||
use pimalaya_tui::{
|
||||
himalaya::backend::BackendBuilder,
|
||||
terminal::{cli::printer::Printer, config::TomlConfig as _},
|
||||
};
|
||||
use std::{
|
||||
io::{self, BufRead, IsTerminal},
|
||||
sync::Arc,
|
||||
};
|
||||
use serde::{ser::SerializeStruct, Serialize, Serializer};
|
||||
use tracing::info;
|
||||
|
||||
use crate::{
|
||||
@@ -69,8 +72,30 @@ impl MessageSaveCommand {
|
||||
.join("\r\n")
|
||||
};
|
||||
|
||||
backend.add_message(folder, msg.as_bytes()).await?;
|
||||
let id = backend.add_message(folder, msg.as_bytes()).await?;
|
||||
|
||||
printer.out(format!("Message successfully saved to {folder}!\n"))
|
||||
printer.out(MessageAdded { folder, id })
|
||||
}
|
||||
}
|
||||
|
||||
struct MessageAdded<'a> {
|
||||
folder: &'a String,
|
||||
id: SingleId,
|
||||
}
|
||||
|
||||
impl fmt::Display for MessageAdded<'_> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let id = self.id.as_str();
|
||||
let folder = self.folder;
|
||||
writeln!(f, "Message {id} successfully saved to {folder}")
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for MessageAdded<'_> {
|
||||
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
|
||||
let mut state = serializer.serialize_struct("MessageAdded", 2)?;
|
||||
state.serialize_field("folder", self.folder)?;
|
||||
state.serialize_field("id", self.id.as_str())?;
|
||||
state.end()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
use std::{
|
||||
fmt,
|
||||
io::{self, BufRead, IsTerminal},
|
||||
sync::Arc,
|
||||
};
|
||||
|
||||
use clap::Parser;
|
||||
use color_eyre::Result;
|
||||
use email::{backend::feature::BackendFeatureSource, config::Config};
|
||||
use email::{backend::feature::BackendFeatureSource, config::Config, envelope::SingleId};
|
||||
use mml::MmlCompilerBuilder;
|
||||
use pimalaya_tui::{
|
||||
himalaya::backend::BackendBuilder,
|
||||
terminal::{cli::printer::Printer, config::TomlConfig as _},
|
||||
};
|
||||
use std::{
|
||||
io::{self, BufRead, IsTerminal},
|
||||
sync::Arc,
|
||||
};
|
||||
use serde::{ser::SerializeStruct, Serialize, Serializer};
|
||||
use tracing::info;
|
||||
|
||||
use crate::{
|
||||
@@ -85,6 +88,30 @@ impl TemplateSaveCommand {
|
||||
|
||||
backend.add_message(folder, &msg).await?;
|
||||
|
||||
printer.out(format!("Template successfully saved to {folder}!\n"))
|
||||
let id = backend.add_message(folder, &msg).await?;
|
||||
|
||||
printer.out(TemplateAdded { folder, id })
|
||||
}
|
||||
}
|
||||
|
||||
struct TemplateAdded<'a> {
|
||||
folder: &'a String,
|
||||
id: SingleId,
|
||||
}
|
||||
|
||||
impl fmt::Display for TemplateAdded<'_> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let id = self.id.as_str();
|
||||
let folder = self.folder;
|
||||
writeln!(f, "Template {id} successfully saved to {folder}")
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for TemplateAdded<'_> {
|
||||
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
|
||||
let mut state = serializer.serialize_struct("TemplateAdded", 2)?;
|
||||
state.serialize_field("folder", self.folder)?;
|
||||
state.serialize_field("id", self.id.as_str())?;
|
||||
state.end()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user