melib/jmap: add UTCDate queries in EmailFilterCondition
Not necessarily working, added as stubs for future work Closes #62master
parent
2e6a1e1ef8
commit
23997bdec0
|
@ -581,6 +581,7 @@ impl From<crate::search::Query> for Filter<EmailFilterCondition, EmailObject> {
|
||||||
fn from(val: crate::search::Query) -> Self {
|
fn from(val: crate::search::Query) -> Self {
|
||||||
let mut ret = Filter::Condition(EmailFilterCondition::new().into());
|
let mut ret = Filter::Condition(EmailFilterCondition::new().into());
|
||||||
fn rec(q: &crate::search::Query, f: &mut Filter<EmailFilterCondition, EmailObject>) {
|
fn rec(q: &crate::search::Query, f: &mut Filter<EmailFilterCondition, EmailObject>) {
|
||||||
|
use crate::datetime::{timestamp_to_string, RFC3339_FMT};
|
||||||
use crate::search::Query::*;
|
use crate::search::Query::*;
|
||||||
match q {
|
match q {
|
||||||
Subject(t) => {
|
Subject(t) => {
|
||||||
|
@ -604,23 +605,48 @@ impl From<crate::search::Query> for Filter<EmailFilterCondition, EmailObject> {
|
||||||
Body(t) => {
|
Body(t) => {
|
||||||
*f = Filter::Condition(EmailFilterCondition::new().body(t.clone()).into());
|
*f = Filter::Condition(EmailFilterCondition::new().body(t.clone()).into());
|
||||||
}
|
}
|
||||||
Before(_) => {
|
Before(t) => {
|
||||||
//TODO, convert UNIX timestamp into UtcDate
|
*f = Filter::Condition(
|
||||||
|
EmailFilterCondition::new()
|
||||||
|
.before(timestamp_to_string(*t, Some(RFC3339_FMT), true))
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
After(_) => {
|
After(t) => {
|
||||||
//TODO
|
*f = Filter::Condition(
|
||||||
|
EmailFilterCondition::new()
|
||||||
|
.after(timestamp_to_string(*t, Some(RFC3339_FMT), true))
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Between(_, _) => {
|
Between(a, b) => {
|
||||||
//TODO
|
*f = Filter::Condition(
|
||||||
|
EmailFilterCondition::new()
|
||||||
|
.after(timestamp_to_string(*a, Some(RFC3339_FMT), true))
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
|
*f &= Filter::Condition(
|
||||||
|
EmailFilterCondition::new()
|
||||||
|
.before(timestamp_to_string(*b, Some(RFC3339_FMT), true))
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
On(_) => {
|
On(t) => {
|
||||||
//TODO
|
rec(&Between(*t, *t), f);
|
||||||
}
|
}
|
||||||
InReplyTo(_) => {
|
InReplyTo(ref s) => {
|
||||||
//TODO, look inside Headers
|
*f = Filter::Condition(
|
||||||
|
EmailFilterCondition::new()
|
||||||
|
.header(vec!["In-Reply-To".to_string().into(), s.to_string().into()])
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
References(_) => {
|
References(ref s) => {
|
||||||
//TODO
|
*f = Filter::Condition(
|
||||||
|
EmailFilterCondition::new()
|
||||||
|
.header(vec!["References".to_string().into(), s.to_string().into()])
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
AllAddresses(_) => {
|
AllAddresses(_) => {
|
||||||
//TODO
|
//TODO
|
||||||
|
|
Loading…
Reference in New Issue