diff --git a/notmuch/src/lib.rs b/notmuch/src/lib.rs index 08241b8..f90b7e9 100644 --- a/notmuch/src/lib.rs +++ b/notmuch/src/lib.rs @@ -641,7 +641,6 @@ impl Notmuch { let Some(msg) = &tn.0 else { return Ok(()); }; - info!("msg.headers {:#?}", msg.headers); let mut addrs = vec![]; let hdr = &msg.headers.to; if let Some(to) = hdr { diff --git a/web/graphql/schema.json b/web/graphql/schema.json index 422ed6b..3284a65 100644 --- a/web/graphql/schema.json +++ b/web/graphql/schema.json @@ -671,6 +671,30 @@ } } }, + { + "args": [], + "deprecationReason": null, + "description": null, + "isDeprecated": false, + "name": "xOriginalTo", + "type": { + "kind": "OBJECT", + "name": "Email", + "ofType": null + } + }, + { + "args": [], + "deprecationReason": null, + "description": null, + "isDeprecated": false, + "name": "deliveredTo", + "type": { + "kind": "OBJECT", + "name": "Email", + "ofType": null + } + }, { "args": [], "deprecationReason": null, diff --git a/web/graphql/show_thread.graphql b/web/graphql/show_thread.graphql index 467bdf1..3c396ff 100644 --- a/web/graphql/show_thread.graphql +++ b/web/graphql/show_thread.graphql @@ -31,6 +31,14 @@ query ShowThreadQuery($threadId: String!) { name addr } + xOriginalTo { + name + addr + } + deliveredTo { + name + addr + } timestamp body { __typename diff --git a/web/src/view/mod.rs b/web/src/view/mod.rs index 0dfee47..0fd2f52 100644 --- a/web/src/view/mod.rs +++ b/web/src/view/mod.rs @@ -519,6 +519,48 @@ fn render_open_header(msg: &ShowThreadQueryThreadOnEmailThreadMessages) -> Node< }) ] ]), + IF!(msg.to.is_empty() && msg.x_original_to.is_some()=>div![ + C!["text-xs"], + span![ + C!["font-semibold"], + "Original To: " + ], + span![ + msg.x_original_to.as_ref().map(|to| { + let ShowThreadQueryThreadOnEmailThreadMessagesXOriginalTo { name, addr } = to; + span![ + addr.as_ref().map(|addr| attrs! { + At::Title => addr + }), + name.as_ref().unwrap_or_else(|| addr.as_ref().unwrap_or(&unknown)), + " ", + addr.as_ref().map(|addr| copy_text_widget(&addr)), + " " + ] + }) + ] + ]), + IF!(msg.to.is_empty() && msg.x_original_to.is_none() && msg.delivered_to.is_some() => div![ + C!["text-xs"], + span![ + C!["font-semibold"], + "Delivered To: " + ], + span![ + msg.delivered_to.as_ref().map(|to| { + let ShowThreadQueryThreadOnEmailThreadMessagesDeliveredTo { name, addr } = to; + span![ + addr.as_ref().map(|addr| attrs! { + At::Title => addr + }), + name.as_ref().unwrap_or_else(|| addr.as_ref().unwrap_or(&unknown)), + " ", + addr.as_ref().map(|addr| copy_text_widget(&addr)), + " " + ] + }) + ] + ]), IF!(!msg.cc.is_empty() =>div![ C!["text-xs"], span![ @@ -614,6 +656,48 @@ fn render_closed_header(msg: &ShowThreadQueryThreadOnEmailThreadMessages) -> Nod ], " " ]), + IF!(msg.to.is_empty() && msg.x_original_to.is_some()=>div![ + C!["text-xs"], + span![ + C!["font-semibold"], + "Original To: " + ], + span![ + msg.x_original_to.as_ref().map(|to| { + let ShowThreadQueryThreadOnEmailThreadMessagesXOriginalTo { name, addr } = to; + span![ + addr.as_ref().map(|addr| attrs! { + At::Title => addr + }), + name.as_ref().unwrap_or_else(|| addr.as_ref().unwrap_or(&unknown)), + " ", + addr.as_ref().map(|addr| copy_text_widget(&addr)), + " " + ] + }) + ] + ]), + IF!(msg.to.is_empty() && msg.x_original_to.is_none() && msg.delivered_to.is_some() => div![ + C!["text-xs"], + span![ + C!["font-semibold"], + "Delivered To: " + ], + span![ + msg.delivered_to.as_ref().map(|to| { + let ShowThreadQueryThreadOnEmailThreadMessagesDeliveredTo { name, addr } = to; + span![ + addr.as_ref().map(|addr| attrs! { + At::Title => addr + }), + name.as_ref().unwrap_or_else(|| addr.as_ref().unwrap_or(&unknown)), + " ", + addr.as_ref().map(|addr| copy_text_widget(&addr)), + " " + ] + }) + ] + ]), IF!(!msg.cc.is_empty() => div![ C!["text-xs", "max-w-full", "overflow-clip", "text-ellipsis"], span![