Compare commits

..

No commits in common. "1bbebad01bb2686a7ae42e087da8b9bd3685f2b4" and "f6d5d3755b5f82712ed3b010a459e7f37f838246" have entirely different histories.

8 changed files with 40 additions and 96 deletions

33
Cargo.lock generated
View File

@ -3020,9 +3020,9 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-notmuch" name = "letterbox-notmuch"
version = "0.17.9" version = "0.17.3"
source = "sparse+https://git.z.xinu.tv/api/packages/wathiede/cargo/" source = "sparse+https://git.z.xinu.tv/api/packages/wathiede/cargo/"
checksum = "aea61000b7ea6d2cca754dea71bafb54aa913a98f30f7b01836cce1414af5614" checksum = "660e35d98139603d764aba884faea20b6ebd43864afd8a70ee0864d161cb7089"
dependencies = [ dependencies = [
"log", "log",
"mailparse", "mailparse",
@ -3034,7 +3034,7 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-notmuch" name = "letterbox-notmuch"
version = "0.17.10" version = "0.17.5"
dependencies = [ dependencies = [
"itertools", "itertools",
"log", "log",
@ -3049,12 +3049,12 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-procmail2notmuch" name = "letterbox-procmail2notmuch"
version = "0.17.10" version = "0.17.5"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
"letterbox-notmuch 0.17.9", "letterbox-notmuch 0.17.3",
"letterbox-shared 0.17.9", "letterbox-shared 0.17.3",
"serde", "serde",
"sqlx", "sqlx",
"tokio 1.44.2", "tokio 1.44.2",
@ -3062,7 +3062,7 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-server" name = "letterbox-server"
version = "0.17.10" version = "0.17.5"
dependencies = [ dependencies = [
"ammonia", "ammonia",
"anyhow", "anyhow",
@ -3080,8 +3080,8 @@ dependencies = [
"futures 0.3.31", "futures 0.3.31",
"headers", "headers",
"html-escape", "html-escape",
"letterbox-notmuch 0.17.10", "letterbox-notmuch 0.17.3",
"letterbox-shared 0.17.10", "letterbox-shared 0.17.3",
"linkify", "linkify",
"log", "log",
"lol_html", "lol_html",
@ -3106,12 +3106,12 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-shared" name = "letterbox-shared"
version = "0.17.9" version = "0.17.3"
source = "sparse+https://git.z.xinu.tv/api/packages/wathiede/cargo/" source = "sparse+https://git.z.xinu.tv/api/packages/wathiede/cargo/"
checksum = "359b4c3ab6b8a91d9a66798b3ee87285f102b7820d38f1d5d3f4be4ea7480803" checksum = "e30cefa3eebb0b15b077527072a4a53dbde8dd6cb513b20e78f036a84c86329a"
dependencies = [ dependencies = [
"build-info", "build-info",
"letterbox-notmuch 0.17.9", "letterbox-notmuch 0.17.3",
"regex", "regex",
"serde", "serde",
"sqlx", "sqlx",
@ -3121,10 +3121,10 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-shared" name = "letterbox-shared"
version = "0.17.10" version = "0.17.5"
dependencies = [ dependencies = [
"build-info", "build-info",
"letterbox-notmuch 0.17.10", "letterbox-notmuch 0.17.3",
"regex", "regex",
"serde", "serde",
"sqlx", "sqlx",
@ -3134,7 +3134,7 @@ dependencies = [
[[package]] [[package]]
name = "letterbox-web" name = "letterbox-web"
version = "0.17.10" version = "0.17.5"
dependencies = [ dependencies = [
"build-info", "build-info",
"build-info-build", "build-info-build",
@ -3146,7 +3146,8 @@ dependencies = [
"graphql_client", "graphql_client",
"human_format", "human_format",
"itertools", "itertools",
"letterbox-shared 0.17.9", "letterbox-notmuch 0.17.3",
"letterbox-shared 0.17.3",
"log", "log",
"seed", "seed",
"seed_hooks", "seed_hooks",

View File

@ -8,7 +8,7 @@ authors = ["Bill Thiede <git@xinu.tv>"]
edition = "2021" edition = "2021"
license = "UNLICENSED" license = "UNLICENSED"
publish = ["xinu"] publish = ["xinu"]
version = "0.17.10" version = "0.17.5"
repository = "https://git.z.xinu.tv/wathiede/letterbox" repository = "https://git.z.xinu.tv/wathiede/letterbox"
[profile.dev] [profile.dev]

View File

@ -503,28 +503,15 @@ impl Notmuch {
self.tags_for_query("*") self.tags_for_query("*")
} }
#[instrument(skip_all, fields(tag=tag,search_term=search_term))]
pub fn tag_add(&self, tag: &str, search_term: &str) -> Result<(), NotmuchError> { pub fn tag_add(&self, tag: &str, search_term: &str) -> Result<(), NotmuchError> {
self.tags_add(tag, &[search_term]) self.run_notmuch(["tag", &format!("+{tag}"), search_term])?;
}
#[instrument(skip_all, fields(tag=tag,search_term=?search_term))]
pub fn tags_add(&self, tag: &str, search_term: &[&str]) -> Result<(), NotmuchError> {
let tag = format!("+{tag}");
let mut args = vec!["tag", &tag];
args.extend(search_term);
self.run_notmuch(&args)?;
Ok(()) Ok(())
} }
#[instrument(skip_all, fields(tag=tag,search_term=search_term))]
pub fn tag_remove(&self, tag: &str, search_term: &str) -> Result<(), NotmuchError> { pub fn tag_remove(&self, tag: &str, search_term: &str) -> Result<(), NotmuchError> {
self.tags_remove(tag, &[search_term]) self.run_notmuch(["tag", &format!("-{tag}"), search_term])?;
}
#[instrument(skip_all, fields(tag=tag,search_term=?search_term))]
pub fn tags_remove(&self, tag: &str, search_term: &[&str]) -> Result<(), NotmuchError> {
let tag = format!("-{tag}");
let mut args = vec!["tag", &tag];
args.extend(search_term);
self.run_notmuch(&args)?;
Ok(()) Ok(())
} }

View File

@ -13,8 +13,8 @@ version.workspace = true
[dependencies] [dependencies]
anyhow = "1.0.98" anyhow = "1.0.98"
clap = { version = "4.5.37", features = ["derive", "env"] } clap = { version = "4.5.37", features = ["derive", "env"] }
letterbox-notmuch = { version = "0.17.9", registry = "xinu" } letterbox-notmuch = { version = "0.17.2", registry = "xinu" }
letterbox-shared = { version = "0.17.9", registry = "xinu" } letterbox-shared = { version = "0.17.2", registry = "xinu" }
serde = { version = "1.0.219", features = ["derive"] } serde = { version = "1.0.219", features = ["derive"] }
sqlx = { version = "0.8.5", features = ["postgres", "runtime-tokio"] } sqlx = { version = "0.8.5", features = ["postgres", "runtime-tokio"] }
tokio = { version = "1.44.2", features = ["rt", "macros", "rt-multi-thread"] } tokio = { version = "1.44.2", features = ["rt", "macros", "rt-multi-thread"] }

View File

@ -27,8 +27,8 @@ css-inline = "0.14.4"
futures = "0.3.31" futures = "0.3.31"
headers = "0.4.0" headers = "0.4.0"
html-escape = "0.2.13" html-escape = "0.2.13"
letterbox-notmuch = { path = "../notmuch", version = "0.17.10", registry = "xinu" } letterbox-notmuch = { version = "0.17.2", registry = "xinu" }
letterbox-shared = { path = "../shared", version = "0.17.10", registry = "xinu" } letterbox-shared = { version = "0.17.2", registry = "xinu" }
linkify = "0.10.0" linkify = "0.10.0"
log = "0.4.27" log = "0.4.27"
lol_html = "2.3.0" lol_html = "2.3.0"

View File

@ -982,8 +982,6 @@ pub async fn label_unprocessed(
} else { } else {
&ids[..] &ids[..]
}; };
let mut add_mutations = HashMap::new();
let mut rm_mutations = HashMap::new();
for id in ids { for id in ids {
let id = format!("id:{id}"); let id = format!("id:{id}");
let files = nm.files(&id)?; let files = nm.files(&id)?;
@ -1003,63 +1001,20 @@ pub async fn label_unprocessed(
.get_first_value("subject") .get_first_value("subject")
.expect("no subject header") .expect("no subject header")
); );
} } else {
for t in &add_tags { for t in &add_tags {
//nm.tag_add(t, &id)?; nm.tag_add(t, &id)?;
add_mutations }
.entry(t.to_string()) if add_tags.contains("spam") || add_tags.contains("Spam") {
.or_insert_with(|| Vec::new()) nm.tag_remove("unread", &id)?;
.push(id.clone()); }
} if !add_tags.contains("inbox") {
if add_tags.contains("spam") || add_tags.contains("Spam") { nm.tag_remove("inbox", &id)?;
//nm.tag_remove("unread", &id)?; }
let t = "unread".to_string(); nm.tag_remove("unprocessed", &id)?;
rm_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
}
if !add_tags.contains("inbox") {
//nm.tag_remove("inbox", &id)?;
let t = "inbox".to_string();
rm_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
}
//nm.tag_remove("unprocessed", &id)?;
let t = "unprocessed".to_string();
rm_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
} else {
if add_tags.is_empty() {
let t = "Grey".to_string();
add_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
} }
} }
} }
println!("Adding {} distinct labels", add_mutations.len());
for (tag, ids) in add_mutations.iter() {
println!(" {tag}: {}", ids.len());
if !dryrun {
let ids: Vec<_> = ids.iter().map(|s| s.as_str()).collect();
nm.tags_add(tag, &ids)?;
}
}
println!("Removing {} distinct labels", rm_mutations.len());
for (tag, ids) in rm_mutations.iter() {
println!(" {tag}: {}", ids.len());
if !dryrun {
let ids: Vec<_> = ids.iter().map(|s| s.as_str()).collect();
nm.tags_remove(tag, &ids)?;
}
}
Ok(()) Ok(())
} }
fn find_tags<'a, 'b>(rules: &'a [Rule], headers: &'b [MailHeader]) -> (bool, HashSet<&'a str>) { fn find_tags<'a, 'b>(rules: &'a [Rule], headers: &'b [MailHeader]) -> (bool, HashSet<&'a str>) {

View File

@ -12,7 +12,7 @@ version.workspace = true
[dependencies] [dependencies]
build-info = "0.0.40" build-info = "0.0.40"
letterbox-notmuch = { path = "../notmuch", version = "0.17.10", registry = "xinu" } letterbox-notmuch = { version = "0.17.2", registry = "xinu" }
regex = "1.11.1" regex = "1.11.1"
serde = { version = "1.0.219", features = ["derive"] } serde = { version = "1.0.219", features = ["derive"] }
sqlx = "0.8.5" sqlx = "0.8.5"

View File

@ -33,7 +33,8 @@ wasm-bindgen = "=0.2.100"
uuid = { version = "1.16.0", features = [ uuid = { version = "1.16.0", features = [
"js", "js",
] } # direct dep to set js feature, prevents Rng issues ] } # direct dep to set js feature, prevents Rng issues
letterbox-shared = { version = "0.17.9", registry = "xinu" } letterbox-shared = { version = "0.17.2", registry = "xinu" }
letterbox-notmuch = { version = "0.17.2", registry = "xinu" }
seed_hooks = { version = "0.4.1", registry = "xinu" } seed_hooks = { version = "0.4.1", registry = "xinu" }
strum_macros = "0.27.1" strum_macros = "0.27.1"
gloo-console = "0.3.0" gloo-console = "0.3.0"